2012-03-31 7 views
2

ので、このパターンのRuby 1.9.3に死にかけている:ブロックは

def foo(&block) 
    block.call 
end 

foo lambda { puts 'hi' } 

は、この結果としてされています:

wrong number of arguments (1 for 0) (ArgumentError)

のRuby 1.9.3を使用します。

これは間違っていますか?

答えて

6

あなたは、単にブロックラムダは必要ありません:あなたはPROCを渡したい場合は、

def foo(&block) 
    block.call 
end 

foo { puts 'hi' } 

を通常のパラメータを使用します。

def foo(ohai) 
    ohai.call 
end 

foo lambda { puts 'hi' }