它是Ruby中的错误还是Ruby中的正确行为?

时间:2017-02-10 05:46:09

标签: ruby

我无法弄清楚为什么在第3个Ruby语句中,当逗号后面没有空格但是put之后没有空格时会抛出语法错误。

vivek@P11-AS 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()

vivek@P11-AS MINGW64 ~
$

1 个答案:

答案 0 :(得分:3)

Ruby中的正确行为。函数调用可以遵循以下两种模式之一:

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

但不是

function (arg1, arg2...)

即。当您对参数使用括号时,函数名和括号之间不能有空格。

请注意:

function (arg1)

实际上只相当于

function((arg1))

因而有效。然而,

function (arg1, arg2)

正在尝试解析为

function((arg1, arg2))

不符合Ruby语法。

逗号没有任何我记得的间距规则;所有这些都是有效的:

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

但编码样式更喜欢第一种。

相关问题