Sto leggendo un manuale:“Ruby per applicazioni web”.
Qui riporto un esempio per quanto riguarda i thread.
a = 1
Thread.new do
a = 2
end
puts #{a}
il valore riportato da puts dovrebbe essere 2.
Ma lo scope della seconda “a” non dovrebbe essere all’interno di do end?
Mi aspetterei quindi che puts riportasse 1 e non 2.
Grazie.
il valore riportato da puts dovrebbe essere 2.
Ma lo scope della seconda “a” non dovrebbe essere all’interno di do end?
Mi aspetterei quindi che puts riportasse 1 e non 2.
Grazie.
Ciao Mauro,
variabili che non sono state dichiarate nel contesto chiamante, sono
create
all’interno del blocco, locali ad esso e quindi non visibili
all’esterno.
Se assegni però un valore ad una variabile prima di entrare nel blocco,
questa sarà accessibile al blocco perché i blocchi “ereditano l’ambiente”
del contesto chiamante.
Per cui una variabile assegnata prima di entrare nel blocco, può essere
modificata dal blocco, e valutata successivamente.