在ruby中我的数组初始化有什么问题?

时间:2013-04-09 23:04:48

标签: ruby

为什么这是ruby中的语法错误?

#!/usr/bin/ruby

servers = [ 
            "xyz1-3-l" 
    ,       "xyz1-2-l" 
    ,       "dws-zxy-l" 
    ,       "abcl" 
]

hostname_input = ARGV[0]
hostname = hostname_input.gsub( /.example.com/, "" )
servers.each do |server|
    if  hostname == server then 
            puts "that's the one"
            break
    end
end

...当我执行这个脚本时,我得到了这个输出......

$ ./test.rb abc1
./test.rb:5: syntax error, unexpected ',', expecting ']'
        ,       "xyz1-2-l" 
         ^
./test.rb:6: syntax error, unexpected ',', expecting $end
        ,       "dws-zxy-l" 
         ^

...如果我只是把所有东西放在同一条线上就可以了......

$ cat test.rb 
#!/usr/bin/ruby

servers = [ "xyz1-3-l" ,        "xyz1-2-l" ,    "dws-zxy-l" ,   "abcl" ]

hostname_input = ARGV[0]
hostname = hostname_input.gsub( /.example.com/, "" )
servers.each do |server|
        if  hostname == server then 
                puts "that's the one"
                break
        end
end
$ ./test.rb dws-zxy-l
that's the one

2 个答案:

答案 0 :(得分:3)

看马,没有逗号(或引号):

servers = %W[
    xyz1-3-l
    xyz1-2-l
    dws-zxy-l
    abcl
]

# => ["xyz1-3-l", "xyz1-2-l", "dws-zxy-l", "abcl"] 

答案 1 :(得分:2)

Newlines在Ruby中很重要。你需要将逗号放在行的末尾或在换行符之前使用反斜杠来表示该行正在继续(当然,在这种情况下,将逗号移动到下一行的重点是什么?)。