Есть ли лучшие способы предотвратить «уступку», когда не передается ни один блок?

У меня есть метод, который дает результат, который выглядит так:

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

Но разве нет более красивых способов?

38
задан Tao 15 August 2011 в 02:46
поделиться