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