为什么不同的运营商有不同的关联性?

Ski*_*ick 4 language-agnostic programming-languages operators associativity

我已经阅读了Ruby编程语言中有关运算符的部分,这让我想到了运算符关联性.顺便说一下,这不是一个Ruby问题 - 它适用于所有语言.

我知道运营商必须以某种方式关联,我可以看到为什么在某些情况下,一种方式会优于另一种方式,但我很难看到更大的图景.语言设计者是否有一些标准用来决定从左到右应该从哪里做什么?从右到左应该做什么?在某些情况下,它"只是有意义",因为它只是一种方式,而其他情况只是一种武断的决定吗?或者这背后有一些宏伟的设计?

Oli*_*rth 7

通常它的语法是"自然的":

  • 考虑x - y + z.你希望它是从左到右,所以你得到(x - y) + z而不是x - (y + z).
  • 考虑a = b = c.你希望它是从右向左,所以你得到的a = (b = c),而不是(a = b) = c.

我无法想象一个选择似乎是"任意"的例子.

免责声明:我不知道Ruby,所以上面的例子都基于C语法.但我确信同样的原则适用于Ruby.