Я иногда вижу блоки begin...end, используемые в ruby, без каких-либо rescue, else, ensure и т.д. операторов между ними. Например:
foo = begin
whatever = 3
"great"
42
end
Целью кодера, похоже, является использование блока begin...end только для его качества группировки (как если бы begin были do). Лично я считаю, что это использование нарушает принцип наименьшего удивления (begin подразумевает обработку исключений).
Существуют ли какие-либо непреднамеренные последствия использования begin...end таким образом? У блоков begin...end есть какие-либо смысловые различия (возможно, в обработке исключений?), Которые делают это использование опасным?
Синтаксис Ruby невероятно тонкий, и я не удивлюсь, если бы здесь были странные gotchas.