有没有更好的方法来防止“收益”时,没有通过块?

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

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

如果一个被传入,我希望这个方法产生块; 如果没有块被传入,那么该方法应该略微跳过产量信号,而不会像以下那样崩溃:

  no block given (yield) (LocalJumpError) 

当然,最简单的方法是将方法改为:

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

但是有没有更漂亮的方式?