红宝石中的操作优先级

时间:2009-10-07 02:35:28

标签: ruby

我是Ruby的新手,所以如果这个问题很奇怪,请接受我的道歉

我尝试了返回5-8.abs的放置-3,然后我尝试了返回(5-8).abs的放置3

当我尝试放置5-8.abs时发生了什么,好像忽略了abs

3 个答案:

答案 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,就像你得到的一样。

此外,任何时间优先都是空中最少的,明确的括号有帮助。