fiberとprocについて・・・その1
fiberは1.9から追加された機能です。
でprocと似ているのですが、微妙に違います。
$:.unshift(File.dirname(__FILE__)) fi = Fiber.new do |first| # 処理 second = Fiber.yield("#{first}!") "#{first}, #{second}" end puts fi.resume('hello') puts fi.resume('world') proc = Proc.new do |text| "Hello#{text}" end puts proc.call("!") puts proc.call(', world!') proc.call
上記のコード例でいうとfiberでは「Fiber.yield が実行されたタイミングで resume メソッドの呼び出し元に処理が戻り、戻り値は Fiber.yield の引数 "#{first}!" すなわち "Hello!" になります。」ということらしい。。。ちょっとここがまだピンとこないので、もう少し学習してから加筆しよう。
procの方がcallメソッドが呼ばれるタイミングで内部の処理がそれぞれ呼ばれる。。うん、こっちは分かる。
fiberの方はもうちょっとみてから再度まとめようー