【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      相关资源
      最近更新 更多