Я читаю Программирование в 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
. Но так как каждый оператор является всего лишь методом, где задан оператор + =? Может быть, есть некоторый класс (например, Object
в Java), содержащий все ограничения для таких операторов и так далее.
Я смотрел на AnyRef
в надежде найти, но не смог.