2013-12-20 68 views
1

在此代碼:爲什麼這個纖維表現這種方式

fiber = Fiber.new do |first, second| 
    num = Fiber.yield first + second + 2 
end 

puts fiber.resume 5, 4 
puts fiber.resume 3 

輸出是113每個在單獨的行。

我明白爲什麼輸出是11第一個fiber.resume(其參數作爲塊參數傳遞給Fiber.new),但我不明白爲什麼第二fiber.resume回報3。這是怎麼回事?

回答

1

從文檔:

光纖#恢復方法接受的參數的任意數量的,如果它 是第一次調用以恢復然後將它們作爲塊 參數傳遞。否則,他們將調用的返回值 Fiber.yield

你的第二個電話恢復僅返回由光纖#產量返回的值,這將是簡單的3

http://www.ruby-doc.org/core-2.0.0/Fiber.html

相關問題