Я хочу выйти из блока начала / конца, все еще присваивая переменную, которой назначен ее результат.
def foo
@foo ||= begin
puts "running"
return "leaving early" if true # would be some sort of calculation
# Other calculations
end
end
То, что я надеюсь, произойдет
> foo
running
=> leaving early
> foo
=> leaving early
Чтофактически происходит
> foo
running
=> leaving early
> foo
running
=> leaving early
Код не работает, потому что return
завершает весь метод без установки @foo
.Использование break
или next
работает только в циклах.Работает ли что-нибудь в блоке начала так, как я думаю?
Текущие способы, которыми я могу это сделать, но надеялся избежать:
- Назначение переменной в блоке начала и возврат
- Помещение оставшейся части начального блока в оператор if
- Выполнение вычисления перед начальным блоком
Похоже, существует много связанных вопросов овырывается из блоков, но я не могу найти тот, который отвечает этой конкретной версии (возможно, потому что это невозможно).