新手问题 发现个 Ruby 函数调用参数传递的一个奇怪问题

small_fish__ · 2012年10月10日 · 最后由 lyfi2003 回复于 2012年10月10日 · 4821 次阅读

今天在写代码的时候,无意发现一个 Ruby 函数在调用的时候关于参数写法的格式问题。 问题如下图: 测试代码 1(有错): alt text 错误提示: alt text

然后修改代码,删除了函数调用时 函数名与 ( 之间的空格 图示: alt text 然后就 ok 了: alt text

由于文字描述能力有限,故截了个图。 我想问的是,为什么 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) 了,而这不是一个合法的表达式。

#1 楼 @fsword 正是这个原因,在 Ruby1.8 还是支持的,但是已经给警告了:

(irb):3: warning: don't put space before argument parentheses

Ruby1.9 不再支持多参数带空格的方法调用了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号