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

273
37

У меня есть метод, который дает:


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

Но не все ли красивее?

спросил(а) 2021-01-19T23:03:27+03:00 9 месяцев, 1 неделя назад
1
Решение
374

Да!:)

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

ответил(а) 2021-01-19T23:03:27+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема