我是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
复制相似问题