なんでしょう ???
scala> (4+"abc").getClass.getName
res3: java.lang.String = java.lang.String
scala> ("abc"+4).getClass.getName
res5: java.lang.String = java.lang.String
どちらも java.lang.String です。String
Interactive Interpreter は単にnotと言っているだけだと思いますjava.lang.String
。しかし、java.lang.String インスタンスがあります。
("abc"+4): '+' is applied to java.lang.String, and returns java.lang.String. This is true both on Java and Scala.
(4+"abc") on Java: '+' is applied to java.lang.Integer, and returns java.lang.String.
(4+"abc") on Scala: '+' is applied to scala.Int, and returns String. '+(x: String)' is defined on scala.Int.
Interactive Interpreter の出力で、type String = java.lanag.String
Predef.scala で定義されている が適用されます。もちろん、逆は定義されていません。
これはとても汚く見える
私はそうは思わない。
それらが常に文字列になるように一貫している必要があります
私はそうは思わない。一貫しています。
Java バージョン「1.7.0_09」
Scala コード ランナー バージョン 2.9.2