我是Ruby的新手,所以如果这个问题很奇怪,请接受我的道歉
我尝试了返回5-8.abs
的放置-3
,然后我尝试了返回(5-8).abs
的放置3
。
当我尝试放置5-8.abs
时发生了什么,好像忽略了abs
?
答案 0 :(得分:9)
这是一个优先问题。方法调用.abs
在减号运算符之前计算。
5-8.abs # => equivalent to 5-(8.abs)
以这种方式思考 - 在Ruby中,空白并不重要。如果你看到这个,你会发生什么?
5 - 8.abs
以下是Ruby precedence rules的参考资料。
答案 1 :(得分:4)
方法调用(本例中为8.abs
)的优先级始终高于运算符(在本例中为-
)。
因此,5-8.abs
转换为5-(8.abs) = 5 - 8 = -3
答案 2 :(得分:3)
5-8.abs似乎正在做5-(8.abs)= 5-8 = -3,就像你得到的一样。
此外,任何时间优先都是空中最少的,明确的括号有帮助。