Ruby Headscratcher - A variável da instância não é emitida
-
03-07-2019 - |
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"
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