在三元运算符的上下文中,我对关联性的概念感到困惑。在大多数情况下,三元运算符看起来像这样:
a ? b : c
在这种情况下,评估表达式不需要结合性。但有时会嵌套三元运算符:
a ? b : c ? d : e
a ? b : (c ? d : e) // : is right-associative
然而,嵌套关系也可能被倒置。
a ? b ? c : d : e
a ? (b ? c : d) : e // : is left-associative
什么是最好的解释这种现象的方式?您是否考虑过
:
运算符的关联性取决于上下文,或者我在这里漏掉了什么?当一个人想要定义自己的三元运算符时,例如在Swift中,关联性问题变得相关。
infix operator ? { associativity right precedence 120 }
infix operator : { associativity left precedence 130 }