今天在写代码的时候,无意发现一个 Ruby 函数在调用的时候关于参数写法的格式问题。 问题如下图: 测试代码 1(有错): 错误提示:
然后修改代码,删除了函数调用时 函数名与 ( 之间的空格 图示: 然后就 ok 了:
由于文字描述能力有限,故截了个图。 我想问的是,为什么 ruby 语法分析器会把它当作错误处理呢,是特殊考虑,还是太死版了点?个人觉得完全可以加个空格的吧!!
这个确实不行,因为 ruby 的函数调用是可以没有括号的,比如这样的函数
def foo arg1 puts arg1 arg1 + 10 end
这两种调用就有区别了
1.9.3p194 :006 > foo (2+3)*5 25 => 35 1.9.3p194 :007 > foo(2+3)*5 5 => 75
空格会影响优先级。func_test (1, 2) 先去演算 (1, 2) 了,而这不是一个合法的表达式。
func_test (1, 2)
(1, 2)
#1 楼 @fsword 正是这个原因,在 Ruby1.8 还是支持的,但是已经给警告了:
(irb):3: warning: don't put space before argument parentheses
Ruby1.9 不再支持多参数带空格的方法调用了。