【发布时间】:2015-08-18 19:27:37
【问题描述】:
我想知道为什么我不能从这个街区回来:
[1,2].each { |e| return e } # => LocalJumpError: unexpected return
虽然这些工作:
[1,2].each { |e| Proc.new {return e} } # => [1, 2]
[1,2].each { |e| lambda {return e} } # => [1, 2]
希望有人能解释一下。
【问题讨论】:
-
再次尝试您的代码,但这次调用 proc 和 lambda(因为块也被调用)。你会看到 proc 也会加注。这是因为块和 proc 是相同的,但是 lambda 的行为类似于方法。请参阅reactive.io/tips/2008/12/21/… 或诸如stackoverflow.com/questions/1435743/… 之类的答案
-
另见stackoverflow.com/a/1402764/192702。没有
each这样的枚举器看起来有点奇怪,但是你可以使用next关键字来退出任何块。
标签: ruby lambda closures block proc