[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:1654

From: 5 5 <redmine@r...>
Date: Wed, 19 Aug 2009 12:52:43 +0900
Subject: [ruby-reference-manual:1654] [Bug #1958] class Fiber の「ショートチュートリアル」

Bug #1958: class Fiber の「ショートチュートリアル」
http://redmine.ruby-lang.org/issues/show/1958

起票者: 5 5
ステータス: Open, 優先度: Low
カテゴリ: doc
reporter: 5.5, ruby_version: 1.9

ファイバーの理解でつまずく最初のポイントは,ファイバー親子間の値のやりとりだと思います。そこで,ショートチュートリアルの最初の実行例は,
・ブロックパラメーター
・Fiber#resume の引数と返り値
・Fiber.yield の引数と返り値
・ブロックの評価値
がすべて入っていて,かつ単純な
 f=Fiber.new do |x|
   puts "A: #{x}"
   puts "B: #{Fiber.yield(1)}"
   2
 end
 
 puts "C: #{f.resume(3)}"
 puts "D: #{f.resume(4)}"
 #=> A: 3
     C: 1
     B: 4
     D: 2
のようなものにしては如何でしょうか。
値のやりとりだけでなく,正確な実行順序も分かります。よく「Fiber.yield で親に戻すと,resume の次の行から再開される」とか「resume すると Fiber.yield の次の行から再開される」といった誤った記述を見かけますが,これは返り値を利用しないサンプルで理解しようとするからでは。


----------------------------------------
http://redmine.ruby-lang.org

--
ML: ruby-reference-manual@m...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]