Я работал на том, чтобы лучше понять Руби и вот что-то у меня возникают проблемы с:установки глобальной в процедурный
$SAFE = 1
puts $SAFE # 1
proc {
$SAFE = 2
puts $SAFE # 2
}.call
puts $SAFE # 1
Приведенный выше код частично взят из источника Эрба переписан, чтобы лучше выделить пример. В основном внутри proc можно установить значение $SAFE
независимо от того, что нужно и после proc, значение SAFE
возвращается к тому, что было до proc.
Если вместо того, чтобы использовать слово $SAFE
я изменить его на другое слово, например, $DOOR
:
$DOOR = 1
puts $DOOR
proc {
$DOOR = 2
puts $DOOR
}.call
puts $DOOR
то значение $DOOR
после прока является 2, а не 1. Почему разница между этими двумя Примеры?
ОК, это именно то, что я хотел знать. Я смотрел и надеялся на последовательность, но вместо этого я обнаружил, что мы имеем дело с волшебным единорогом. :-) – Francois