attributes ruby
Ruby Instance Variable Scope Question (2)
Aquellos con colon (: algo) son símbolos.
http://glu.ttono.us/articles/2005/08/19/understanding-ruby-symbols
Vengo de C ++ y JAVA, que con Scope existe ya sea global o local.
Ahora estoy aprendiendo ruby-on-rails y con ruby hay local, instancia y global. Nunca había oído hablar de instancia hasta ahora.
Con o sin rieles, ¿cuál es la comprensión y el uso de la variable de instancia?
Global = Variable across all objects share
Instance = Variable inside of the object
Local = Variable inside of the object
Creo que estoy obteniendo instancia y local un poco mezclados.
@ham
ham
Estas son dos variables diferentes ¿no? A veces me confundo en Rails porque usan cosas intercambiables como @ algo y: algo. ¿Porqué es eso?
Como utilizo el framework Rails, todo lo que entiendo de la variable de instancia es algo a lo que puede acceder la vista.
¿Alguien puede aclarar estas variables?
La variable de instancia en Ruby es como la de Java, parte del estado del objeto:
class MyObject
def set_x(x)
@x = x
end
def get_x
@x
end
end
Código de Java equivalente:
class MyObject {
private Object x;
void setX(Object x) {
this.x = x;
}
Object getX() {
return x;
}
}
Y la variable local es solo una variable accesible solo dentro de este método en particular:
def doIt
x = 3;
# x not accessible from outside of doIt
puts x
end
void doIt() {
int x = 3;
// same in Java
System.out.println(x);
}
editar
¿Qué quieres decir con estado de objeto?
MyObject o = new MyObject();
o.setX(3);
// integer 3 is now stored in variable ''x'' of object ''o''
// I can return any time later and get that value back by ''o.getX()''