首页 > 解决方案 > 方法调用如何与运算符优先级交互?

问题描述

我很好奇方法调用与运算符优先级的关系。在 irb 中,我看到了这个:

var = puts(5)
5
=> nil
var
=> nil

这意味着对 puts 的调用比赋值运算符具有更高的优先级,因为 nil(puts(5) 的返回值)被分配给 var,而不是方法调用本身。因为 nil 被分配给 var (正如我们在第 4 行看到的那样),我猜 puts(5) 在赋值运算符之前被调用了。

这个Stackoverflow 线程中,每个人都同意方法调用的优先级低于每个运算符。

但是这个网站列出了 . 作为方法调用的运算符,并说它是最高优先级的运算符。

如果第二个网站确实准确,我不确定是否存在隐含的 . 当您在 main 上调用方法时的运算符(因此关于 . 作为高优先级运算符是否足以解释上面的 irb 会话)。

一般来说,我对 Ruby 在遇到一行代码时执行操作的顺序感到好奇,因此,如果您知道任何以可访问的方式解释这一点的资源,我将有兴趣阅读它们。

编辑:感谢到目前为止的回答。也许我对我的基本问题不够清楚,这些问题理论上不实用(可以说是“过度思考”,这取决于你喜欢思考多少):

谢谢

标签: rubymethodsoperator-precedence

解决方案


你多虑了。你的表达基本上是这样的:x = something因此,必须先评估右侧,然后才能完成分配。


推荐阅读