可以创建
dead loop
在ruby中使用lambdas:
a = 0
lambda = ->{ a += 1; puts "#{a}"; sleep 1}
loop &lambda
p a
现在我在寻找一种方法
break
这种循环由
lambda
转入区块
。我尝试的两种明显的方法都没有完成一个循环,它们只是从lambda中退出,但循环仍然有效:
打破
不停止循环:
a = 0
lambda = ->{ a += 1; puts "#{a} break"; sleep 1; break; p "This line will not appears"}
loop &lambda
p a
return
不要停止循环:
a = 0
lambda = ->{ a += 1; puts "#{a} return"; sleep 1; return; p "This line will not appears"}
loop &lambda
p a
如果我使用
proc
而不是
兰姆达
我能够
回来
退出循环,但我也退出程序:
a = 0
prc_ = Proc.new{a += 1; puts "#{a} proc return"; sleep 1; return; p "This line will not appears"}
loop &prc_
p a
当我使用
打破
在…内
过程
,我只是放弃了
LocalJumpError
例外
a = 0
prc_ = Proc.new{a += 1; puts "#{a} proc break"; sleep 1; break; p "This line will not appears"}
loop &prc_
p a