2011年4月24日

[ruby-list:48007] Re: lambda中のProc中のreturnの挙動について

信岡です。

興味深い話題だったので色々調べてみたのですがなかなか難しい問題ですね。。

> 確かに、現状がこの通りであればあの挙動は納得です。
> 「1.8ではprocのreturnはprocを含むメソッドを抜ける」は、「1.9ではlambdaをメソッド呼び出しっぽく〜」の裏返しということでしょうか?
> MLからはそのものずばりの発言は探しあてられませんでした。

そうですね、1 つは 『1.8の時は囲んでいるメソッドから脱出するはずです。』 [1] というまつもとさんの発言と、
お察しのとおり 『1.9 では,lambda を「メソッド呼び出し」っぽく扱う,という原則があったはずです.』 [2] という
ささださんの発言の裏返しから、Ruby 1.8 で proc 直下の return はその proc を含むメソッドを抜ける、というのが仕様
なのかなと考えました。
ただ、まつもとさんの発言は lambda の中に入っている proc について言及されているわけではないので、
ちゃんと確認する必要がありますね。

ruby-dev:35175 [3] において、まさに lambda の中の proc からの return について議論されてますが、残念ながら
proc メソッド (Ruby 1.8 においては proc ではなく lambda が生成される) が使われているため参考にならず。。

[1] http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/35171?35002-35918+split-mode-vertical
[2] http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/35173?35002-35918+split-mode-vertical
[3] http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/35175?35002-35918+split-mode-vertical

>> ruby-dev 向きの話題だと思いますので、ruby-dev に投げられたほうがいいかもしれません。
>
> そうですね。
> devに投げて、ひとまず現在の実装方針が信岡さんの書かれたような状態なのかどうかを確認したいと思います。

ruby-dev:43423 を確認しました。
そちらのほうにも後でちょこっと補足事項を投げておこうかと思います。

--
信岡 ゆう (NOBUOKA Yu)


投稿者 xml-rpc : 2011年4月24日 01:08
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103223
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。