From: m_takao Date: 2011-04-23T18:58:33+09:00 Subject: [ruby-list:48001] Re: lambda中のProc中のreturnの挙動について 高尾です。 信岡さん、詳しく調査してくださってありがとうございます。 > そこらへんの混乱があることを踏まえつつ発言の意図を汲み取ると > > ・[Ruby 1.8] proc 直下での return 式は、その proc を含んでいるメソッドを抜ける > ・[Ruby 1.9] proc 直下での return 式は、その proc を含んでいるメソッドまたは > 最も内側の lambda を抜ける (『1.9 では,lambda を「メソッド呼び出し」っぽく扱う, > という原則があったはず』 という発言) > ・[Ruby 1.9] lambda の中で生成された proc が、lambda の実行を終了したあとに > 呼び出された場合 (orphan な proc の呼び出し) は LocalJumpError にするのが良いと > 考えられるが、実装的に難しいし特に対応しなくても困らないと考えているため > 実装しない (『レアケース過ぎるかなあ,とも思うので,対応しなくても, > 特に困らないかとは思います』 という発言) > > という感じなのかなーと思いました。 確かに、現状がこの通りであればあの挙動は納得です。 「1.8ではprocのreturnはprocを含むメソッドを抜ける」は、「1.9ではlambdaをメソッド呼び出しっぽく〜」の裏返しということでしょうか? MLからはそのものずばりの発言は探しあてられませんでした。 > ruby-dev 向きの話題だと思いますので、ruby-dev に投げられたほうがいいかもしれません。 そうですね。 devに投げて、ひとまず現在の実装方針が信岡さんの書かれたような状態なのかどうかを確認したいと思います。