Насколько я понимаю, блоки ruby имеют область действия блока, и все переменные, созданные внутри блока, будут жить только внутри блока.
Пример случая:
food = ['toast', 'cheese', 'wine']
food.each { |food| puts food.capitalize}
puts food
Выход:
"Toast"
"Cheese"
"Wine"
"Wine"
Если вы возьмете переменную food
внутри блока (Каждый блок ), насколько я понимаю, она имеет область действия блока. Он живет только внутри блока и не имеет никакого влияния на внешнюю переменную food
.
Но поведение другое, в этом случае модифицируется внешняя переменная с именем food
. Верно ли это понимание? В рубине у нас есть блочная область?