He estado trabajando en tratar de comprender mejor Ruby y aquí es algo que estoy teniendo problemas con:el establecimiento de un mundial dentro de un proc
$SAFE = 1
puts $SAFE # 1
proc {
$SAFE = 2
puts $SAFE # 2
}.call
puts $SAFE # 1
El código anterior es tomada en parte de la fuente de Erb reescrito para resaltar mejor el ejemplo. Básicamente dentro del proceso se puede establecer el valor de $SAFE
en cualquier valor que se quiera y, después del proceso, el valor de SAFE
vuelve a ser lo que era antes del proceso.
Si en lugar de utilizar la palabra $SAFE
lo cambio a una palabra diferente, como $DOOR
:
$DOOR = 1
puts $DOOR
proc {
$DOOR = 2
puts $DOOR
}.call
puts $DOOR
entonces el valor de $DOOR
después de que el proc es 2 y no 1. ¿Por qué la diferencia entre los dos ejemplos?
bien, eso es exactamente lo que quería saber. Estaba buscando y esperando coherencia, pero aquí en cambio me parece que estamos lidiando con una magia mágica del unicornio. :-) – Francois