ho lavorato per cercare di capire meglio Ruby e qui è qualcosa che sto avendo problemi con:l'impostazione di un globale all'interno di un proc
$SAFE = 1
puts $SAFE # 1
proc {
$SAFE = 2
puts $SAFE # 2
}.call
puts $SAFE # 1
Il codice di cui sopra è parzialmente tratto da fonte di Erb riscritto per una migliore evidenziazione l'esempio. Fondamentalmente all'interno del proc è possibile impostare il valore di $SAFE
a qualsiasi valore desiderato e dopo il proc, il valore di SAFE
ritorna a ciò che era prima del proc.
Se invece di usare la parola $SAFE
lo cambio ad una parola diversa, come ad esempio $DOOR
:
$DOOR = 1
puts $DOOR
proc {
$DOOR = 2
puts $DOOR
}.call
puts $DOOR
allora il valore del $DOOR
dopo il proc è 2 e non 1. Perché la differenza tra i due esempi?
ok, questo è esattamente quello che volevo sapere. Stavo guardando e sperando nella coerenza ma qui invece trovo che abbiamo a che fare con un magico unicorno thingamajiggy. :-) – Francois