Ruby 关于 Fiber.yield 参数的理解

towonzhou · 2013年09月27日 · 2297 次阅读

Fiber.yield 后面的为 fiber.resume 的返回值。 而下一次 resume 传入的参数为 Fiber.yield 的返回值。

f = Fiber.new do |a|
  c = Fiber.yield a+100
  p c
end

p f.resume(10)  #=> 110 
f.resume(100)  #=> 100

第一次的参数是 10,返回的是 a+10,返回给 f.resume(10) 继续调用 f.resume,传入 100,此时 100 作为 Fiber.yield 的返回值赋给 c,所以 c 是 100

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号