なにもしないクラスメソッドにブロック渡すとProcが返ってくる
なにもしないクラスメソッド
irb(main):104:0> class A irb(main):105:1> def self.hoge(*args, &block) irb(main):106:2> end irb(main):107:1> end => nil irb(main):108:0> A.hoge("bar"){puts "bar"} => #<Proc:0xb7e739f4@(irb):108>
なんかするクラスメソッド
irb(main):109:0> class A irb(main):110:1> def self.hoge(*args, &block) irb(main):111:2> puts "hoge" irb(main):112:2> end irb(main):113:1> end => nil irb(main):114:0> A.hoge("bar"){puts "bar"} hoge => nil
なんで?常識?理屈が分からない・・
追記
あぁ、環境を書いてませんでした
# ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin9.2.2]
akimatterさんからフィードバックもらいました。
クラスメソッドっていうより、なにもしない特異メソッドにブロックを渡すとProcが返る、というのが正確ということっすね。
Procオブジェクトが返ってくることに困ってることはないんですが、ほぇーと思って。
1.9だとnilが返るらしいですが手元にない・・入れないとな・・