Ruby的陷阱语法陷阱1
ruby吧
全部回复
仅看楼主
level 9
sevk 楼主
()的功能
结合度问题
因为表示Range对象(或范围表达式)的.., ...的结合度较低(请参考操作符表达式),所以会引发下列错误
1..3.to_a
warning: default `to_a' will be obsolete
ArgumentError: bad value for range
上面的代码会被解释成下面这个样子。
1..(3.to_a)
用括号将范围表达式括起来是比较明智的。
(1..3).to_a # => [1, 2, 3]
原文: http://www.kuqin.com/rubycndocument/man/trap/syntax_parentheses.html

2010年07月09日 14点07分 1
level 1
多用括号是个好习惯。
2010年07月09日 21点07分 2
level 9
sevk 楼主
在方法调用中省略括号所引起的误会
继续上面的话题,下面的代码不会得到预期的结果
p (1..3).to_a
=> 1..3
因为它被解释成下面的代码。
(p (1..3)).to_a
说到括号的问题,其实它不仅限于范围表达式,而且还会影响到方法调用。若方法后面出现括号时,只有括号中的内容会被看作是参数,所以如此。另外,请看下例
Time.gm (19+1)*100,2,11,12,34,56
=> -:1: parse error
Time.gm (19+1)*100,2,11,12,34,56
^
此时必须使用括号将所有的参数都括起来才行。
p ((1..3).to_a)
=> [1, 2, 3]
Time.gm((19+1)*100,2,11,12,34,56)
=> Fri Feb 11 12:34:56 UTC 2000

2010年07月19日 02点07分 4
level 1
给大家助助兴!
[怒]}[委屈]




[鲁拉][怒]

2011年09月28日 09点09分 6
level 3
如果是这样, 用php好了, ruby主张就不用括号,
写出1..3.to_a这样的语句, 估计也只能是刚学编程的新人。
2011年10月26日 09点10分 7
level 9
sevk 楼主
是的,一般不会写 1..3.to_a ,实际应用中是:
x=1..3
x.to_a
2011年10月27日 00点10分 8
1