我喜欢 Scala 关于运算符优先级的建议,但在极少数情况下,未修改的规则可能会带来不便,因为您在命名方法时受到限制。有没有办法在 Scala 中为类/文件等定义另一个规则?如果没有,以后会解决吗?
问问题
25039 次
4 回答
104
运算符优先级在Scala Reference - 6.12.3 Infix Operations中由运算符中的第一个字符固定。按优先级升序排列:
(all letters)
|
^
&
= !
< >
:
+ -
* / %
(all other special characters)
而且改变的可能性不大。它可能会产生比它修复的问题更多的问题。如果您使用普通运算符优先级,将其更改为一个类将非常混乱。
于 2010-05-27T15:26:35.850 回答
8
有没有办法在 Scala 中为类/文件等定义另一个规则?如果没有,以后会解决吗?
没有这样的能力,在可预见的将来增加它的可能性很小。
于 2010-05-27T15:24:42.377 回答
2
在 scala 编译器的类型级分支中提出了一个功能请求,这是一个“预览”实验性功能的编译器版本。开发人员建议,如果有人为此编写SIP,可以考虑实施。
但在目前的状态下,没有办法覆盖优先级。它的规则在语言规范中正式定义。
于 2017-09-23T07:52:03.027 回答
0
未修改的规则可能不方便,因为您在命名方法时受到限制
- 您在命名方法时没有任何限制。例如,您可以为一个类定义方法 +、-、* 等。
- 我们还必须遵循 Thomas Jung 之前的回答 ( https://stackoverflow.com/a/2922456 )中提到的事实上的“未修改规则”(由 Scala 运算符优先规则强制执行)——这对于许多(如果不是全部)编程语言都很常见和抽象代数;我们不需要为 a+b*c 重新定义运算符优先级。
有关“Rational”类示例,请参阅本书http://www.scala-lang.org/docu/files/ScalaByExample.pdf的第 6 章。
于 2016-12-12T19:13:05.967 回答