2012-08-27 9 views
6

Duplicar posibles:
Rails and class variablesRuby: Diferencia entre Instancia y variables locales en Ruby

Podría alguien por favor dígame cuál es la diferencia entre las variables de instancia de Ruby y variables locales?

Hasta donde yo sé, tanto las variables de instancia como las variables locales son las mismas, y ambas se declaran dentro del propio método y excepto que las variables de instancia se denotan con el símbolo @.

+0

tengo una explicación sobre esto aquí: http://stackoverflow.com/questions/11523547/rails-and-class-variables/11523632#11523632 – Frost

+1

Google él. Lo digo en serio. – vise

Respuesta

11

Es una cuestión de scope. Una variable local solo es visible/utilizable en el método en el que está definida (es decir, desaparece cuando vuelve el método).

Por otra parte, una variable de instancia es visible en cualquier otro lugar en la instancia de la clase en la que se ha definido (esto es diferente de una variable de clase, que se comparte entre todas las instancias de una clase). Tenga en cuenta, sin embargo, que cuando define la variable de instancia es importante. Si se define una variable de instancia en un método, pero intenta utilizarlo en otro método antes de llamar a la primera, la variable de instancia tendrá un valor igual a cero:

def method_one 
    @var = "a variable" 

    puts @var 
end 

def method_two 
    puts @var 
end 

@var tendrá un valor diferente dependiendo de cuando se llama a cada método:

method_two() # Prints nil, because @var has not had its value set yet 

method_one() # Prints "a variable", because @var is assigned a value in method_one 

method_two() # Prints "a variable" now, because we have already called method_one 
+0

excelente respuesta: me gustaría añadir que si una variable local (por ejemplo, localVar) se declara en method_one, no se puede invocar desde method_two. – BKSpurgeon

Cuestiones relacionadas