Существуют ли более эффективные способы предотвращения «доходности», когда блок не передается? - PullRequest
38 голосов
/ 15 августа 2011

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

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

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

1 Ответ

71 голосов
/ 15 августа 2011

Да! :)

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