私はScalaのProgramming in M. Oderskyを読んでいますが、今は演算子の意味を理解しようとしています。私が見る限り、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
)。しかし、すべての演算子は単なる方法なので、+ =演算子はどこに定義されていますか?多分、そのような演算子のためのすべてのdefenitionsを含んでいるいくつかのクラス(JavaではObject
のような)があります。
私は見つけることを望んでAnyRef
を見ましたが、できませんでした。