Fiber でフィボナッチ数列
これはプログラミング言語 ruby のまる移し
Fiber つかってフィボナッチ数列を返すのにクラス作って Fiber であることを隠蔽したパタン。
class FibonacciGenerator def initialize @x, @y = 0, 1 @fiber = Fiber.new do loop do @x, @y = @y, @x+@y Fiber.yield @x end end end def next @fiber.resume end def rewind @x, @y = 0, 1 end end g = FibonacciGenerator.new 10.times { print g.next, " " } # 1 1 2 3 5 8 13 21 34 55 g.rewind; puts 10.times { print g.next, " " } # 1 1 2 3 5 8 13 21 34 55 puts
この例で Fiber はなんとなくわかった感じだけど、イマイチ使いどころが思いつかない。