Ruby中的Continuation让时光倒流
大家对Continuation可能还比较陌生,但它是个好东西
按手册介绍说:它包含返回地址和执行上下文,允许从程序的任何地方返回到callcc block的结尾处。
使用continuation 我们就可以实现“月光宝盒”,重返往日某时某刻。那还不赶快来见识一下?
举个例子来说:
def cont
a=nil
for i in 1..4
puts i
callcc {|continuation| a=continuation} if i==2
end
return a
end
在irb中,我们执行
x=cont
它会输出
0
1
2
3
4
当再调用 x.call时会输出
3
4
看,我们又重新回到了2这个时光点。
至于它的应用,大家可以发挥了。。。