メソッドの引数の最後に&つきの引数を定義するとブロックが入ってくる。
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
う〜ん。動いてるっぽいけど何かよからぬことみたいだ。
後でもうちょい調べてみよう。