ruby scope

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()''