Область блока в рубине

Насколько я понимаю, блоки ruby ​​имеют область действия блока, и все переменные, созданные внутри блока, будут жить только внутри блока.

Пример случая:

 food = ['toast', 'cheese', 'wine']
 food.each { |food| puts food.capitalize}
 puts food

Выход:

"Toast"
"Cheese"
"Wine"
"Wine"

Если вы возьмете переменную foodвнутри блока (Каждый блок ), насколько я понимаю, она имеет область действия блока. Он живет только внутри блока и не имеет никакого влияния на внешнюю переменную food.

Но поведение другое, в этом случае модифицируется внешняя переменная с именем food. Верно ли это понимание? В рубине у нас есть блочная область?

13
задан 18bytes 27 July 2012 в 10:26
поделиться