2017-02-10 67 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) 

但是编码风格倾向于第一个。