2017-02-10 68 views
0

我無法弄清楚爲什麼在第三個Ruby語句拋出語法錯誤時,在逗號之後沒有空格但放置後有空格。這是Ruby中的錯誤還是Ruby中的正確行爲?

[email protected] MINGW64 ~ 
$ irb 
Switch to inspect mode. 
puts("Hello, World!","Good bye, World!") 
puts("Hello, World!","Good bye, World!") 
Hello, World! 
Good bye, World! 
nil 


puts ("Hello, World!") 
puts ("Hello, World!") 
Hello, World! 
nil 


puts ("Hello, World!","Good bye, World!") 
puts ("Hello, World!","Good bye, World!") 
SyntaxError: (irb):7: syntax error, unexpected ',', expecting ')' 
puts ("Hello, World!","Good bye, World!") 
        ^
(irb):7: syntax error, unexpected ')', expecting end-of-input 
     from C:/Ruby21-x64/bin/irb:11:in `<main>' 

puts("Hello, World!", "Good bye, World!") 
puts("Hello, World!", "Good bye, World!") 
Hello, World! 
Good bye, World! 
nil 

exit() 
exit() 

[email protected] MINGW64 ~ 
$ 

回答

3

Ruby中的正確行爲。函數調用可以按照以下兩種模式之一:

function(arg1, arg2...) 
function arg1, arg2... 

但不

function (arg1, arg2...) 

即當您使用括號中的參數,不能有函數名和括號之間的空間。

需要注意的是這樣的:

function (arg1) 

實際上只是相當於

​​

,從而有效。然而,

function (arg1, arg2) 

試圖解析爲

function((arg1, arg2)) 

不符合語法的Ruby。

逗號沒有任何我記得的間距規則;所有這些都是有效的:

function(arg1, arg2) 
function(arg1 , arg2) 
function(arg1 ,arg2) 
function(arg1,arg2) 

但是編碼風格傾向於第一個。