是否有一种优雅的方式可以将“无为”作为lambda传递?

问题描述 投票:0回答:1

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

目前,我这样做:

foo(->(*) {})

这看起来有点丑陋,我不得不相信有一种更优雅和易读的方式来编写这种内置于Ruby语言中。

是否有更好的方法来传递'无所事事'的lambda?

ruby lambda parameter-passing
1个回答
3
投票

我建议改为重新思考foo

话虽如此,我认为没有更优雅的方式,但如果你真的想要你可以添加这样的东西(我认为这比你的东西更丑)

module Kernel
  def noop
    Proc.new {}
  end
end

然后打电话给

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

foo(noop) 
#=> nil
© www.soinside.com 2019 - 2024. All rights reserved.