Ruby headscratcher - la variabile di istanza non viene emessa
-
03-07-2019 - |
Domanda
Probabilmente sto facendo qualcosa di stupido ma non riesco a capire di cosa si tratti.
L'output che vedo da questo programma è
foo
test
Quello che mi aspetto di vedere è
foo
abc
test
Qualcuno vede ovviamente qualcosa di sbagliato qui?
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"
Soluzione
Non hai mai impostato @abc nel tuo metodo abc =
. Dovrebbe apparire come
def abc=(val)
@abc = val
end
Altri suggerimenti
Oltre alla risposta di Logan che ti dice quale fosse l'errore, ecco come non si sarebbe mai verificato l'errore in primo luogo:
class Foo
def initialize(l)
@label = l
end
attr_reader :label
attr_accessor :abc
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow