对于纤维,我们有一个经典的例子: 生成斐波那契数
fib = Fiber.new do
x, y = 0, 1
loop do
Fiber.yield y
x,y = y,x+y
end
end
为什么我们需要纤程在这里? 我可以重写这只是相同的程序(闭包,实际上)
def clsr
x, y = 0, 1
Proc.new do
x, y = y, x + y
x
end
end
那么
10.times { puts fib.resume }
还有
prc = clsr
10.times { puts prc.call }
将返回同样的结果。
那么纤维的优点是什么。我可以用 Fibers 编写什么东西,但是我不能用 lambdas 和其他很酷的 Ruby 特性来编写?