我正在閱讀M.Odersky編寫的Scala中的程序,現在我正試圖理解運算符的含義。據我所知,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
希望找到,但不能。