Ok, então eu tenho essa classe simples
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
Por que é o último t.var
declaração retornando nil com eu espero que ele retorne 99 por causa do @var = 99
no topo da classe. Talvez a minha ideia de escopo não seja 100 correta ... alguma idéia sobre essa
Respostas:
9 para resposta № 1Veja os comentários no 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