Pregunta

Probablemente estoy haciendo algo estúpido, pero no puedo entender qué es.

La salida que estoy viendo de este programa es

foo

test

Lo que espero ver es

foo
abc
test

¿Alguien ve algo obviamente malo aquí?

class Foo

    def initialize(l)
    @label = l
    end

    def label
    @label
    end

    def abc
    @abc
    end

    def abc=(abc)
    @abc
    end

end

foo = Foo.new("foo")
foo.abc=("abc")
puts foo.label
puts foo.abc
puts "test"
¿Fue útil?

Solución

Nunca configuró @abc en su método abc = . Debería verse como

def abc=(val)
  @abc = val
end

Otros consejos

Además de la respuesta de Logan que le dice cuál fue el error, así es como ese error nunca habría ocurrido en primer lugar:

class Foo
  def initialize(l)
    @label = l
  end

  attr_reader :label
  attr_accessor :abc
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top