/ / ¿Por qué no puedo acceder a la variable de instancia en ruby? - Rubí sobre rieles, rubí

¿Por qué no puedo acceder a la variable de instancia en ruby? - Rubí sobre rieles, rubí

Ok, así que tengo esta clase simple

class Test
@var = 99

def initialize(var2)
@var2 = var2
end

attr_reader :var, :var2
end

> t = Test.new(100)
=> #<Test:0x007f9b8118ac30 @var2=100>
> t.var2
=> 100
> t.var
=> nil

Porque es el ultimo t.var declaración devolviendo cero con Espero que devuelva 99 debido a la @var = 99 en la cima de la clase. Tal vez mi idea de alcance no es 100 correcta ... alguna idea sobre esto

Respuestas

9 para la respuesta № 1

Ver comentarios en el código.

class Test
@var = 99 # self is Test class at this point. You"re defining
# an instance variable on a class instance.

def initialize(var2)
@var2 = var2 # This is normal instance variable.
end

attr_reader :var, :var2
end

t = Test.new(100)
t.var # => nil
t.var2 # => 100

# don"t bother with creating an accessor and get the ivar from Test directly.
Test.instance_variable_get(:@var) # => 99