传递块作为方法参数在Ruby 1.9.3中死亡

时间:2012-03-31 23:51:15

标签: ruby

所以这种模式:

def foo(&block)
  block.call
end

foo lambda { puts 'hi' }

导致这个:

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

使用Ruby 1.9.3。

我这样做错了吗?

1 个答案:

答案 0 :(得分:6)

你不需要lambda,只需要块:

def foo(&block)
  block.call
end

foo { puts 'hi' }

如果要传递proc,请使用普通参数:

def foo(ohai)
  ohai.call
end

foo lambda { puts 'hi' }