2017-02-10 2 views
0

カンマの後に空白がなく、スペースの後に3番目の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の正しい動作。関数呼び出しは、これら2つのパターンのいずれかに従うことができます:あなたは引数に括弧を使用する場合、すなわち

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

なく

function (arg1, arg2...) 

を、関数名と括弧の間にスペースがあることはできません。

function (arg1) 

実際

​​

ので、有効にちょうど同等である:これは

注意。しかし、

function (arg1, arg2) 

はRubyの文法に適合しない

function((arg1, arg2)) 

として解析されるようにしようとしています。

コンマには覚えているスペーシングルールはありません。これらはすべて有効です:

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

ただし、コーディングスタイルは最初のものよりも優先されます。

関連する問題