我是Ruby的新手,所以如果这个问题很奇怪,请接受我的道歉
我试着放入返回-3
的5-8.abs
,然后试着放入返回3
的(5-8).abs
。
当我尝试放置5-8.abs
时,abs
似乎被忽略了,到底发生了什么?
发布于 2009-10-07 02:37:04
5-8abs看起来像你得到的那样做5-(8.abs) = 5-8 = -3。
此外,任何时间优先级都是最小的问题,显式的括号有助于解决这个问题。
发布于 2009-10-07 02:43:58
这是一个优先权问题。方法调用.abs
在减号运算符之前求值。
5-8.abs # => equivalent to 5-(8.abs)
这样想吧--空白在Ruby中并不重要。如果你看到这个,你会期望发生什么?
5 - 8.abs
下面是Ruby precedence rules的参考资料。
发布于 2009-10-07 02:43:42
方法调用(本例中为8.abs
)的优先级始终高于运算符(本例中为-
)。
因此,5-8.abs
转换为5-(8.abs) = 5 - 8 = -3
https://stackoverflow.com/questions/1529210
复制相似问题