我的ruby代码是语法错误请帮助我

时间:2012-11-15 12:42:40

标签: ruby-on-rails 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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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"
...