In message "Re: [ruby-dev:35167] return from proc in lambda"
    on Thu, 19 Jun 2008 11:39:24 +0900, SASADA Koichi <ko1 / atdot.net> writes:
|
| ささだです.
|
|  def m
|    lambda{
|      proc{
|        return :ng1
|      }
|    }.call.call
|    :ng2
|  end
|
|  begin
|    m()
|  rescue LocalJumpError
|    :ok
|  end
|
| この例ですが,LocalJumpError にするべきかな,と思うのですが,どう
|でしょうか.1.8, 1.9 ともに :ng2 が返ります.1.9.0-2 では,pending
|にしたいと思います.

[ruby-dev:35171]に書いた原則に従えば、:ng1が返るはずです。
まだmの実行が完了していない以上、procからのreturnはmを終了さ
せるはずです。

が、別にこれが絶対と思っているわけではないので、lambdaをまた
いだprocからのreturnは禁止(LocalJumpError)、でも全然構わない
と思います。

ただ、ng2を返す(procだけを終わらせる?)のはナイと思います。
1.8の方もこれで決めた結果に合わせて直します。