loop { break }
うまく動作しますが、
block = Proc.new { break }
# or
# block = lambda { break }
loop(&block) # => LocalJumpError: break from proc-closure
で可能break
ですblock variable
か?
アップデート:
詳細を説明する例:
def odd_loop
i = 1
loop do
yield i
i += 2
end
end
def even_loop
i = 2
loop do
yield i
i += 2
end
end
# This work
odd_loop do |i|
puts i
break if i > 10
end
# This doesn't work
break_greater_10 = Proc.new do |i|
puts i
break if i > 10
end
odd_loop(&break_greater_10) # break from proc-closure (LocalJumpError)
even_loop(&break_greater_10) # break from proc-closure (LocalJumpError)
私の理解でProc.new
は、ブロックと同じように機能するはずです(return
ブロックから機能することができます)が、ループを壊せない理由がわかりません。
PS 下手な英語でごめんなさい >~<