次のいくつかの scala コードの背後にある理論的根拠を理解するのに少し苦労しています。
REPL では 1 + 1 = 2 であることは誰もが知っています。
scala> 1 + 1
res0: Int = 2
「Abc」+「Def」と入力すると、REPL に「AbcDef」が表示されます。
scala> "Abc" + "Def"
res6: java.lang.String = AbcDef
ここで、文字列 "Abc" に対して + メソッドを呼び出し、パラメーターとして "Def" を渡すとします。
scala> "Abc".+("Def")
res7: java.lang.String = AbcDef
同じ理由で、なぜ 1.+(1) のようなものは倍精度の 2.0 を返すのでしょうか?
scala> 1.+(1)
res1: Double = 2.0
また、引数「1」をパラメーターとして渡すと、次のように「1.01」になるのはなぜですか。
scala> 1.+("1")
res9: String = 1.01
返された結果が、「1」を呼び出し元の型に変換するのではなく、文字列になるのはなぜですか?
ありがとう