有没有更好的方法可以在没有传递阻止时阻止'收益'?

时间:2011-08-15 02:46:29

标签: ruby block yield

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

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

如果传入一个块,我希望这个方法产生块;如果没有传入块,该方法应该轻易跳过yield sentense而不会崩溃,如:

 no block given (yield) (LocalJumpError)

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

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

但是不是更漂亮的方式吗?

1 个答案:

答案 0 :(得分:70)

是的! :)

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