【发布时间】:2016-10-28 15:18:43
【问题描述】:
我正在阅读 M. Odersky 的 Programming in Scala,现在我正在尝试理解运算符的含义。据我所知,Scala 中的任何运算符都只是一种方法。考虑以下示例:
class OperatorTest(var a : Int) {
def +(ot: OperatorTest): OperatorTest = {
val retVal = OperatorTest(0);
retVal.a = a + ot.a;
println("=")
return retVal;
}
}
object OperatorTest {
def apply(a: Int) = new OperatorTest(a);
}
在这种情况下,我们在这个类中只定义了 + 运算符。如果我们输入这样的内容:
var ot = OperatorTest(10);
var ot2 = OperatorTest(20);
ot += ot2;
println(ot.a);
然后
=+
30
将是输出。所以我假设对于 Scala 中的每个类(或类型?),我们为它定义了+= 运算符,如a += b iff a = a + b。但是既然每个运算符都只是一个方法,那么 += 运算符在哪里定义呢?也许有一些类(如 Java 中的 Object)包含此类运算符的所有定义等等。
我查看AnyRef希望找到,但找不到。
【问题讨论】: