2012-11-15 97 views
0

我建立一个班的母亲是“动物”,并建立一个孩子班。 我做的继承顺序是从子类到妈妈级但蹊跷的在我的代码,我必须解决这个问题,但不是很好,请帮助我,我是新手我的ruby代码是语法错误请帮帮我

class Animal 
def initialize 
    @name = "DigDok" 
    @age = 20 
    @sex = "male" 
end 
end 
module Detail 
def detail_set 
    @detail.join(',') 
end 
    class Bird < Animal 
     def initialize 
      @detail = { 
       :wing => 2 
       :legs => 2 
      } 
     end 
    end 

    class Mammal < Animal 
     def initialize 
      @detail = { 
       :legs => 4 
       :babyfood => "Milk" 
       :special_ability => nil 
      } 
     end 
    end 

    class Cat < Animal 
     def initialize 
      @detail = { 
       :sharpclaws => "very Sharp" 
       :special_ability => "Climb a tree" 
      } 
     end 
    end 

    class Dog < Animal 
     def initialize 
      @detail = { 
       :best_friend => "Human" 
       :special_ability => "Bark" 
      } 
     end 
    end 
end 

但在IRB终端结果运行是

SyntaxError: ./learningruby.rb:25: syntax error, unexpected tSYMBEG, expecting '}' 
        :legs => 2 
        ^
./learningruby.rb:30: class definition in method body 
./learningruby.rb:34: syntax error, unexpected tSYMBEG, expecting '}' 
        :babyfood => "Milk" 
        ^
./learningruby.rb:35: syntax error, unexpected tASSOC, expecting kEND 
        :special_ability => nil 
            ^
./learningruby.rb:40: class definition in method body 
./learningruby.rb:44: syntax error, unexpected tSYMBEG, expecting '}' 
        :special_ability => "Climb a tree" 
        ^
./learningruby.rb:45: syntax error, unexpected '}', expecting kEND 
./learningruby.rb:49: class definition in method body 
./learningruby.rb:53: syntax error, unexpected tSYMBEG, expecting '}' 
        :special_ability => "Bark" 
        ^
./learningruby.rb:54: syntax error, unexpected '}', expecting kEND 
    from (irb):1:in `require' 
    from (irb):1 
    from :0 

对不起,如果我的问题这么长时间,但感谢...

+2

您需要的哈希值之间的逗号:'翼:2,双腿:2' –

回答

5

你缺少逗号:@detail = { :wing => 2, :legs => 2 }

+0

哦,谢谢你! –

0

你有两个问题:

首先,你错过了很多逗号:

@detail = { :wing => 2, :legs => 2 } 

@detail = { :legs => 4, :babyfood => "Milk", :special_ability => nil } 

@detail = { :sharpclaws => "very Sharp", :special_ability => "Climb a tree" } 

@detail = { :best_friend => "Human", :special_ability => "Bark" } 

其次,你的@detail哈希,则不能使用数组的join()方法。如果你想使它成为一个字符串,试试这个:

@detail.map{|k,v| "#{k}=#{v}"}.join(',') 
=> "wing=2,legs=2" 
...