次のコードについて助けてください。
sg = Fiber.new do
s = 0
loop do
square = s * s
s += 1
s = Fiber.yield(square) || s
end
end
puts sg.resume
puts sg.resume
puts sg.resume
puts sg.resume 40
puts sg.resume
puts sg.resume 0
puts sg.resume
puts sg.resume
実行すると、次のように出力されます。
0
1
4
1600
1681
0
1
4
6 行目 = Fiber.yield(square) || 仕事?ライン全体が何をしているのかではなく、コンポーネントの部分だけを理解していると思います。(これをよりよく理解するのに役立つ別の書き方はありますか?)。
(編集: このコードは、Peter Cooper による 295 ページの「Beginning Ruby, From Novice to Professional 2nd Ed」の例をわずかに変更したものです。)