From: "Y. NOBUOKA" Date: 2011-05-15T00:31:53+09:00 Subject: [ruby-dev:43552] Re: yieldされたlambdaからのreturn/breakの動きについて 信岡です。 > lambdaとprocは、return/breakの動きと引数の数のチェックの動きに違いがありますが、 > ブロックとして渡したlambdaをyieldで呼び出すとreturn/breakがproc相当になります > (引数チェックはlambda相当のままです)。これは意図された挙動でしょうか。 JIS X 3017 には 「Kernel.lambda メソッドは Proc.new と同じように Proc クラスのインスタンスを生成する。 しかし、yield 式で呼び出された場合を除き、ブロックの実行処理は proc のところで説明した 方法とは異なる」 という感じのこと (JIS X 3017 が手元に無いので正確ではないです) が書かれていたはずなので、 少なくとも Ruby 1.8 系では yield で呼び出した場合に proc 相当になるのは期待通り なんじゃないかと思います。 -- 信岡 ゆう (NOBUOKA Yu)