【发布时间】:2017-02-09 20:17:18
【问题描述】:
你认为 Ruby 中的下一个表达式会产生什么结果?
a = 10 && b = 25
尝试在ming中计算,然后才使用irb。因此,如果我们查看有关 Operators Precedence 的 Ruby 文档,我们会发现 && 运算符的优先级高于 =。所以你一定认为 Ruby 会以下面的方式计算表达式:
a = ((10 && b) = 25)
但 Ruby 以另一种方式发挥作用:
a = (10 && (b = 25))
# => 25
所以,b = 25 中的= 的优先级更高,然后是&&。谁能解释一下为什么会这样?
【问题讨论】:
-
“一定认为 ruby 会这样做:
((10 && b) = 25)” - 不。这没有任何意义。=的左侧在这里不是可分配的实体。
标签: ruby operators operator-precedence