是否有一种优雅的方式将“不做任何事情”作为lambda传递?

时间:2018-09-11 18:53:43

标签: ruby lambda parameter-passing

假设我有一个方法foo,它需要一个lambda参数。 foo使用参数调用lambda。我实际上不希望在执行lambda时发生任何事情。

目前,我正在这样做:

foo(->(*) {})

这看起来有点难看,我必须相信,有一种更优雅,更清晰的方式将其编写为Ruby语言。

是否有更好的方法传递“不做任何事情” lambda?

1 个答案:

答案 0 :(得分:3)

我建议改为重新考虑foo

话虽如此,我认为没有比这更优雅的方法了,但是如果您真的想要,可以添加这样的内容(我认为这比您所拥有的更为丑陋)

module Kernel
  def noop
    Proc.new {}
  end
end

然后以

调用
def foo(blk)
  blk.call(1,2,3,4,5)
end

foo(noop) 
#=> nil
相关问题