2013-04-09 57 views
0

爲什麼在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 
+1

嗯,這是錯誤的話,不是嗎?逗號在哪裏? – 2013-04-09 23:06:38

+0

逗號在行尾,而不是在開頭。 – shime 2013-04-09 23:10:43

+0

Ruby中不需要這種扭曲,忽略尾隨逗號。 – 2013-04-09 23:24:25

回答

3

看,不用逗號(或引號):

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

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

換行符在Ruby中很重要。您需要將逗號放在行尾,或者在換行符之前使用反斜槓來指示該行正在繼續(當然,在這種情況下,將逗號移動到下一行有什麼意義?)。

+0

前導逗號意味着你可以註釋掉一行,而不會被一個關閉。在OP的例子中,訓練逗號也可以正常工作,但對於諸如選項哈希之類的內容,逗號很好,因爲那樣你可以刪除或註釋掉該行,而不必編輯它周圍的行。 – 2013-04-10 01:48:09