メソッドの引数の最後に&つきの引数を定義するとブロックが入ってくる。
def hoge &block p block.class end puts "blockなし呼び出し" hoge puts "block有り呼び出し" hoge { }
実行結果は
blockなし呼び出し NilClass block有り呼び出し Proc
になる。
ふ〜ん。
ってことは、ブロックを受け取るメソッドの引数にProc渡してやればブロック渡したのと同じになる??
proc = Proc.new {|value| value.to_s } p [1, 2, 3].map &proc
とすると実行結果は
["1", "2", "3"] C:/DOCUME~1/****/LOCALS~1/Temp/rb1E.tmp:5: warning: parenthesize argument(s) for future version
う〜ん。動いてるっぽいけど何かよからぬことみたいだ。
後でもうちょい調べてみよう。