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"
È stato utile?

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
scroll top