Metody klasowe (rubin)

Nowicjusz tutaj, mający trudności ze zrozumieniem metod klasy i dlaczego nie mogę uzyskać atrybutu, który byłby poprawnie wyświetlany w instancji.

<code>class Animal
  attr_accessor :noise, :color, :legs, :arms

  def self.create_with_attributes(noise, color)
    animal = self.new(noise)
    @noise = noise
    @color = color
    return animal
  end

  def initialize(noise, legs=4, arms=0)
    @noise = noise
    @legs = legs
    @arms = arms
    puts "----A new animal has been instantiated.----"
  end
end

animal1 = Animal.new("Moo!", 4, 0)
puts animal1.noise
animal1.color = "black"
puts animal1.color
puts animal1.legs
puts animal1.arms
puts

animal2 = Animal.create_with_attributes("Quack", "white")
puts animal2.noise
puts animal2.color
</code>

Kiedy używam metody klasowejcreate_with_attributes (na zwierzęciu 2), oczekuję"white" pojawić się, gdy japuts animal2.color.

Wygląda na to, że zdefiniowałem to za pomocąattr_accessor tak jak ja mam „szum”, a mimo to hałas pojawia się poprawnie, a kolor nie. Podczas uruchamiania tego programu nie pojawia się błąd, ale atrybut .color po prostu nie pojawia się. Wierzę, że to dlatego, że w jakiś sposób opisałem go nieprawidłowo w kodzie.

questionAnswers(2)

yourAnswerToTheQuestion