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.