所以这个模式:
def foo(&block)
block.call
end
foo lambda { puts 'hi' }
Run Code Online (Sandbox Code Playgroud)
导致这个:
wrong number of arguments (1 for 0) (ArgumentError)
使用Ruby 1.9.3.
我做错了吗?
你不需要lambda,只需要块:
def foo(&block)
block.call
end
foo { puts 'hi' }
Run Code Online (Sandbox Code Playgroud)
如果要传递proc,请使用普通参数:
def foo(ohai)
ohai.call
end
foo lambda { puts 'hi' }
Run Code Online (Sandbox Code Playgroud)