ruby - 当没有 block 传入时,有没有更好的方法来防止 'yield'?

标签 ruby block yield

我有一个 yield 方法,它看起来像:

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

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

 no block given (yield) (LocalJumpError)

当然,最直接的方法就是把方法改成:

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

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

最佳答案

是的! :)

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

关于ruby - 当没有 block 传入时,有没有更好的方法来防止 'yield'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061266/

相关文章:

mysql - Windows 是否支持 Datamapper 的 dm_mysql_adapter gem?

ruby-on-rails - 无法使用过滤器标签运行 rspec

Ruby yield 示例解释?

objective-c - NSObject(NSObject)didNotRecognizeSelector:崩溃

python - Python 中的 "yield"

ruby - Ruby 中的事件处理

arrays - 为正 n 和负 n 创建从 0 到 n 的数字数组

ios - 从 Afnetwork block 更新 ios ui 元素时出现延迟

Python:如何使用生成器来避免 sql 内存问题

python - 如何使用生成器遍历文件系统?