Question

Je suis probablement en train de faire quelque chose de stupide mais je n'arrive pas à comprendre ce que c'est.

La sortie de ce programme que je vois est

foo

test

Ce que j'attends de voir, c'est

foo
abc
test

Quelqu'un a-t-il vu quelque chose de manifestement faux ici?

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"
Était-ce utile?

La solution

Vous ne définissez jamais @abc dans votre méthode abc = . Cela devrait ressembler à

def abc=(val)
  @abc = val
end

Autres conseils

En plus de la réponse de Logan qui vous dit quelle était l'erreur, voici comment cette erreur ne se serait jamais produite:

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

  attr_reader :label
  attr_accessor :abc
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top