2
我想知道爲什麼我不能從該塊返回:LocalJumpError:意外的返回
[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也會升起。這是因爲塊和特效是相同的,但lambda表現得像方法一樣。請參閱http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/或SO答案,如https://stackoverflow.com/questions/1435743/why-does -explicit-return-make-a-difference-in-a-proc – cremno
另請參閱http://stackoverflow.com/a/1402764/192702。沒有像'each'這樣的枚舉器,看起來有點奇怪,但是你可以使用'next'關鍵字來退出任何塊。 –