Scala中的运算符优先级

Jer*_*iho 47 scala operator-precedence

我喜欢Scala提出的运算符优先级,但在极少数情况下,未经修改的规则可能不方便,因为在命名方法时有限制.有没有办法为Scala中的类/文件等定义另一个规则?如果没有,将来会解决吗?

Tho*_*ung 101

运算符优先级在Scala Reference - 6.12.3 Infix Operations中由运算符中的第一个字符修复.按优先顺序列出:

(all letters)
|
^
&
= !
< >
:
+ -
* / %
(all other special characters)
Run Code Online (Sandbox Code Playgroud)

它不太可能会发生变化.它可能会产生比修复更多的问题.如果您使用普通的运算符优先级,将其更改为一个类将非常混乱.

  • @Luigi Plinge,`===`不是赋值运算符,因为在异常中:以`=`结尾的运算符是赋值运算符*,除非运算符也以等号*开头.看看gmane线程和另一个链接,Martin自己表示SLS需要更新.我还看不到更新. (7认同)
  • @huynhjl来自引用的参考文献:"这个规则有一个例外,它涉及赋值运算符(第6.14.4节).分配运算符的优先级与简单赋值(=)的优先级相同.也就是说,它是低于任何其他运营商的优先权." §6.12.4将赋值运算符描述为以"="结尾的赋值运算符.所以上面的列表是不完整的,而不是不正确的. (6认同)

Ran*_*ulz 8

没有这样的能力,并且在可预见的未来几乎不可能添加它.