Pergunta

Provavelmente estou fazendo algo estúpido, mas não consigo descobrir o que é.

A saída que estou vendo neste programa é

foo

test

O que estou esperando ver é

foo
abc
test

Alguém vê algo obviamente errado aqui?

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"
Foi útil?

Solução

Você nunca define @ABC em seu abc= método. Deve parecer

def abc=(val)
  @abc = val
end

Outras dicas

Além da resposta de Logan, que informa qual foi o erro, eis como esse erro nunca teria ocorrido em primeiro lugar:

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

  attr_reader :label
  attr_accessor :abc
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top