From: SHIMADA Koji Date: 2007-08-06T23:54:09+09:00 Subject: [ruby-list:43806] Procの仕様について しまだです。 るりまの作業をしていて、 Procの仕様についてちょっとわからなくなってしまいましたので、 どなたかご教授いただけませんでしょうか。 -- 現行のリファレンスマニュアル(http://www2.ruby-lang.org/ja/man/?cmd=view;name=Proc)を確認すると def foo proc { return } end foo.call # => in `call': return from proc-closure (LocalJumpError) def foo proc { retry } end foo.call # => in `call': retry from proc-closure (LocalJumpError) となると書かれていますが、 ruby 1.8.6 (2007-03-13 patchlevel 0) にて動作確認を行ってみると、以下のように動作します。 def foo proc { return } end foo.call # => nil def bar proc { retry } end bar.call # => # ~> -:8:in `call': retry from proc-closure (LocalJumpError) # ~> from -:11 def baz proc { break } end baz.call # => nil LocalJumpErrorのマニュアル(http://www2.ruby-lang.org/ja/man/?cmd=view;name=LocalJumpError)を見ると > スコープを出てしまった Proc からの return, break, retry で発生します。 と書かれているのですが、 現行の動作は期待しているもの(どこかで仕様変更されたもの)なのでしょうか。 また、 その場合は、return, break, retryでどのような切り分けがされているのでしょうか。 [ruby-list:27253] break from proc-closure の辺りで話されている内容だと思うのですが、 上記についてどういう風に動くのが正しいというところが、 うまく掴めませんでした。。 大変恐縮ですが、どなたか教えていただけますと幸いです。 -- 以上どうぞ宜しくお願い致します。 -- [ Event Info ] <絶賛企画中> Ruby勉強会札幌 第5回 9月5日 Ruby Sapporo Night vol.2 -- 島田浩二(snoozer.05@gmail.com) URL : http://iddy.jp/profile/snoozer05/