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 № 1Ver 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