Teniendo en cuenta este código:¿Por qué no se resuelven estos métodos?
class Something
attr_accessor :my_variable
def initialize
@my_variable = 0
end
def foo
my_variable = my_variable + 3
end
end
s = Something.new
s.foo
consigo este error:
test.rb:9:in `foo': undefined method `+' for nil:NilClass (NoMethodError)
from test.rb:14:in `<main>'
Si attr_accessor
crea un método llamado my_variable
(y .. =), ¿por qué no se puede encontrar el método foo
? Funciona si lo cambio a self.my_variable
, pero ¿por qué? ¿No es self
el receptor predeterminado?
WRT la bonificación: Aún necesitará configurar el ivar directamente o usar el colocador. Eso solo establece un local. – Chuck