【问题标题】:Are there better ways to prevent 'yield' when no block is passed in?当没有传入块时,是否有更好的方法来防止“屈服”?
【发布时间】:2011-10-27 00:54:24
【问题描述】:

我有一个产生的方法,它看起来像:

def a_method(*params)
  # do something
  yield
  # do something else
end

如果传入块,我希望此方法产生块;如果没有传入任何块,该方法应该悄悄地跳过 yield 句,而不会崩溃,例如:

 no block given (yield) (LocalJumpError)

当然,最直接的方法是将方法改为:

def a_method(*params, &block)
  # do something
  yield if block
  # do something else
end

但是没有更漂亮的方法吗?

【问题讨论】:

    标签: ruby block yield


    【解决方案1】:

    是的! :)

    def a_method(*params)
      # ...
      yield if block_given?
      # ...
    end
    

    【讨论】:

    • 请注意,它也比捕获块(使用&block)更快。
    • 我他妈的总是忘记block_given?的名字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2021-03-01
    • 2015-07-10
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多