[#47955] るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか — Makoto Kuwata <kwa@...>

桑田といいます。るびま編集部に入りました。

17 messages 2011/04/11

[#48016] 文字列を正規表現にマッチする部分と他の部分に分割 — "5.5" <5.5@...>

5.5 です。

12 messages 2011/04/28

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

From: Satoshi GUNJI <gunjisatoshi@...>
Date: 2011-04-15 08:55:09 UTC
List: ruby-list #47976
郡司と申します。

[ruby-list:47973]を見ていてちょっと気になったので、
Fiberの挙動を確かめるために下記のサンプルコードを実行してみました。

--------
f = Fiber.new do
  Fiber.yield 1
  Fiber.yield 2
  Fiber.yield 3
end

puts f.resume
puts f.resume
puts f.resume
puts f.resume(8)
--------

すると、次のような実行結果となりました。

--------
1
2
3
8
--------

Fiberのブロックが終了した場合のFiber#resumeの戻り値は、
ブロックの評価値(ブロック中で最後に評価された式の戻り値)
だと思うのですが、Fiber#resumeに引数を与えると、
(ブロックにパラメータがないにも関わらず)
その引数がFiberのブロックのコンテキストで評価されている
ように見えるのですが、これは意図された挙動でしょうか。

比較のためにFiberのブロックに意図的に「最後の評価値」
を入れたサンプルコードを下記に示します。

--------
f = Fiber.new do
  Fiber.yield 1
  Fiber.yield 2
  Fiber.yield 3
  4
end

puts f.resume
puts f.resume
puts f.resume
puts f.resume(8)
--------

実行結果は以下です。

--------
1
2
3
4
--------

In This Thread

Prev Next