ruby-1.9のdefine_methodで定義したメソッドのblock_given?の動作が理解できない。

 block_given? は,多分 yield やら Proc.new などが出来るかどうかを確 認するためのものだと思うのですが,define_method で定義したメソッドで はどちらも出来ません(現状では).なので,block_given? も,その用途 には使えない以上,テストケースのようにするのはまずいと思うのですが, いかがでしょうか.

まとめるとブロック引数としては渡るけど、yieldは呼べないとい うことでいいですか。これって、たとえばそのブロックの外側で yieldが有効だったらそっちが呼ばれるということでいいですか? 確かめてみればいいのか。 def foo l = lambda{|&b| p b p block_given? yield } end foo{p :foo}.call foo{p :foo}.call{p :bar} を実行すると nil true :foo #<Proc:0x8b8083c@/tmp/y.rb:9> true :foo ですか。なるほどね、ある意味、一貫性があると言えばありますね。

上記の話が理解できない。まだまだ精進が足りませんね。あとで調べて、自分なりに理解しよう。