From: m_takao Date: 2011-04-22T16:31:55+09:00 Subject: [ruby-list:47997] lambda中のProc中のreturnの挙動について 高尾と申します。 ちょっと日本語では表しにくいのですが、件名の通り、lambda中のProc中のreturnの挙動が不可解だったため、バグかと思い、投稿します。 a = lambda do b = Proc.new do return end b[] end a[] 上記のコードを実行すると、ruby1.8.7ではLocalJumpErrorが起こり、ruby1.9.1では正常終了します。 lambda中のreturnはcallのreturnになり、Proc.new中のreturnは生成元のreturnになる筈なので、 正常終了が正しい挙動のように思います。 また、 def a b = lambda do Proc.new do return end end b[][] end a を実行すると、ruby1.8.7、ruby1.9.1ともに正常終了します。 こちらは、Proc.new中のreturnが実行されるときには生成元が既に終了しているので、LocalJumpErrorが起こるのが正しい挙動のように思います。