2016-03-30 9 views
0

みなさんこんにちは。私はシンプルなルビーコードを書いていますが、画面には表示されません。私はRuby 2.2.2を使用しています。私のIDEはRubymine 7.Thanksです。ここにはコードがあります。 `Zoo.my_animals`の定義においてRubyプログラムが画面に表示されない

class Animal  
    attr_accessor :name, :colour 
    def initialize(name,colour) 
    @name = name  
    @colour = colour 
    end 
    def to_s 
    "Name#{@name} Colour #{@colour}" 
    end 
end 
class Cheetah < Animal  
    attr_reader :speed 
    def initialize(name,colour,speed) 
    @speed = speed 
    super (name,colour) 
    end 
    def to_s 
    return super + "Speed#{@speed}kph" 
    end 
end 
class Zoo < Animal  
    def initialize 
    @animals = []  
    end  
    def add_animals(animal)  
    @animals << animal  
    end  
    def my_animals  
     cage = "" 
    @animal.each do|call| 
     cage += call.to_s 
    end 
    end  
end  
5.times do|count|  
    Zoo.add_animals(MyAnimal.new("Cheetah#{count}","yello and black spots")) 
end  
puts "#{Zoo.my_animals}"  
My_cheetah = Cheetah.new("Cheetah","yello and black spots",180)  
puts "#{My_cheetah.to_s}"  
+0

あなたも、同じ方法で、あなたは文字列('ケージを構築している、 '@のanimal'を(つまり、複数形ではない)を参照しています')、しかしあなたはそれを返すことはありません(' .each'への呼び出しの戻り値はゼロです)。 – user12341234

+1

'each'の戻り値は、' each'のドキュメントで指定されているように 'self'です。 –

答えて

1
class Animal  
    attr_accessor :name, :colour 
    def initialize(name,colour) 
    @name = name  
    @colour = colour 
    end 

    def to_s 
    "Name#{@name} Colour #{@colour}" 
    end 
end 

class Cheetah < Animal  
    attr_reader :speed 

    def initialize(name,colour,speed) 
    @speed = speed 
    super(name,colour) 
    end 

    def to_s 
    return super + "Speed#{@speed}kph" 
    end 
end 

class Zoo < Animal 
    def initialize 
    @animals = []  
    end  

    def add_animal(animal)  
    @animals << animal  
    end 

    def my_animals  
    cage = "" 
    @animals.each do |call| 
     cage += call.to_s 
    end 
    cage 
    end  
end 

zoo = Zoo.new 
5.times do|count|  
    zoo.add_animal(Animal.new("Cheetah#{count}","yello and black spots")) 
end 
puts "#{zoo.my_animals}"  

my_cheetah = Cheetah.new("Cheetah","yello and black spots",180)  
puts "#{my_cheetah.to_s}" 
+2

コードダンプではなく、何を変更する必要があるのか​​、* why *。 –

+0

@DaveNewtonそれは絶対に正しいです。特別な場合には、SOにそのようなコードを掲載するのではなく、あなた自身で何らかの研究をすることが主な必要です。 –

+0

@ MaximPontyushenkoマキシム・エキスプレスと皆様の返信をお待ちしておりますが、あなたのコードをコピーして貼り付けましたが、残念ながらスクリーンには印刷されませんでした。 – AllanBast

関連する問題