Ruby/Избранное с RubyNews: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 45:
 
Локальная переменная блока после выхода из своей области видимости, продолжает хранить прежнее значение, но только если она была определена до блока. Для начала рассмотрим работающий пример:
<source lang=ruby>loop {
a = 5
<code>loop {
a = 5break
}
break
puts a #-> Ошибка. Не могу найти метод или переменную a.</codesource>
}
puts a #-> Ошибка. Не могу найти метод или переменную a.</code>
 
При попытке вывести значение переменной <code>a</code>, интерпретатор сообщает о том, что переменная <code>a</code> не определена. Предварим этот пример небольшим блоком <code>if</code>, который заранее никогда не выполняется:
<source lang=ruby>if false
a = nil
end
 
<code>loop {
<code>if false
a = nil5
break
end
}
puts a #-> 5</codesource>
loop{
a = 5
break
}
puts a #-> 5</code>
 
И получаем нестандартную ситуацию в которой интерпретатор выводит значение <code>a</code>, которое по его мнению равно 5. Неверующим рекомендую проверить...