原(信)です。 In message "[ruby-list:33219] Re: Method passing block" on 02/01/08, Yukihiro Matsumoto <matz / ruby-lang.org> writes: | |まつもと ゆきひろです ||ああ、大きな変更だなあと思ったらバグですか。でも、この block_given? ||は偽なのに yield は可能というのは、なかなか納得のできる仕様だなあ、と ||も思います。多分、見た目がきれいになるプログラムが大いのではないでしょう ||か。 || ||効率を落すのでなければ、1.6.5仕様を採用してしまったらどうでしょう? | |いやあ、さすがにblock_given?が偽なのに(さらにdefined? yield |まで偽なのに)yieldできるってのは私には受け入れがたいですねえ。 block_given? は起動したメソッドが構文上ブロックを伴っているかを判定 するとするわけです。今回のバグであまり文句をいう人がいなかったのをみると、 互換性もあまり問題にならないみたいだし、ブロックを連れ回すプログラムを書 く時は便利な気がしますけど。 あるいは、 def foo(&b) bar(&b) end を def foo( ) bar( &) end と書けるようにするとか? #先のはやっぱり2重投稿になってしまいました。こちら側サーバーが調子 #悪かったみたいです。すいません。