Bloquer la portée à ruby

Ma compréhension était que ruby blocs bloc de portée, et toutes les variables créées à l'intérieur de bloc de vivre seule dans le bloc.

Exemple de cas:

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

De sortie:

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

Si vous prenez le food variable à l'intérieur du bloc (Chaque bloc), ma compréhension est qu'il a le bloc de portée. Il ne vit que dans le bloc de portée, et n'a aucune influence sur l'extérieur variable food.

Mais le comportement est différent, à l'extérieur variable nommée food est modifié dans ce cas. Est-ce la compréhension correcte, ruby ne nous avons bloc de portée?

source d'informationauteur 18bytes