【发布时间】:2018-06-17 23:45:43
【问题描述】:
鲁比:
true == true == true
语法错误,意外的 tEQ
对比JavaScript:
true == true == true
// => true
对比C:
1 == 1 == 1
// => 1
【问题讨论】:
-
它也可以像这样不带括号,显式调用
true .== true .== true -
我想知道有多少其他人难以置信地将失败的代码输入到 irb 中并期望得到不同的结果?
-
stackoverflow.com/a/21060235/2864740 -
==在答案中被列为 not-associative (A=N),这意味着这样的X==Y==Z产生式无效(关联性是什么“在相同优先级的运算符周围添加隐式括号”)。问题中有许多链接可能会回到可以清楚引用的更“官方来源”。 (这个问题更多的是关于该问题/答案中语法规则的特定子集/应用。) -
@SilvioMayolo 根据上面的答案,
<和朋友 是左关联的.. 所以应该解析(并且“工作”,给定有效的运行时输入)。我不确定为什么<会关联而==不会关联的语法合理性是什么,尽管改变可能会打破很多期望..
标签: ruby syntax-error operators operator-precedence associativity