2011年4月19日

[ruby-list:47984] Re: Fiber#resumeの引数について

郡司と申します。

> 5.5 です。

> 先に書きましたが,Fiber.yield や Fiber#resume の値を捨
> てるようなサンプルスクリプトを使うと理解しづらいです。
> 私はそれでだいぶ悩みました。

おっしゃるとおり、Fiber.yieldの戻り値を捨ててしまったために
混乱していました。

次のサンプルスクリプトをirbで実行して、
ようやくFiberの挙動が納得できました。

--
fiber = Fiber.new do |first|
second = Fiber.yield("#{first}!")
"#{first}, #{second}!"
end

fiber.resume('Hello')
fiber.resume('World')
--

実行結果です。

--
001 > fiber = Fiber.new do |first|
002 > second = Fiber.yield("#{first}!")
003?> "#{first}, #{second}!"
004?> end
=> #<Fiber:0x000000024ef398>
005 >
006 > fiber.resume('Hello')
=> "Hello!"
007 > fiber.resume('World')
=> "Hello, World!"
008 >
--

#桑田さんもご指摘の通り、リファレンスマニュアルの整備が
#必要ですね‥‥

投稿者 xml-rpc : 2011年4月19日 09:12
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103198
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。