【问题标题】:Is there an elegant way to pass 'do nothing' as a lambda?有没有一种优雅的方式将“什么都不做”作为 lambda 传递?
【发布时间】:2018-09-11 18:53:42
【问题描述】:
假设我有一个方法,foo,它需要一个 lambda 参数。 lambda 由 foo 使用参数调用。我实际上不希望在执行 lambda 时发生任何事情。
目前,我正在这样做:
foo(->(*) {})
这看起来有点难看,我必须相信有一种更优雅、更易读的方式将其写入 Ruby 语言中。
有没有更好的方法来传递“什么都不做”的 lambda?
【问题讨论】:
标签:
ruby
lambda
parameter-passing
【解决方案1】:
我建议重新考虑 foo。
话虽如此,我认为没有更优雅的方式,但如果你真的想要,你可以添加这样的东西(我认为这比你拥有的更丑)
module Kernel
def noop
Proc.new {}
end
end
然后调用为
def foo(blk)
blk.call(1,2,3,4,5)
end
foo(noop)
#=> nil