Разницы нет, однако это тоже не ошибка. В этом случае:
"1" + 1
вы используете встроенную функцию Java для объединения чего-либо в строку. В конце концов, многие люди конвертируют числа в строки, используя следующую «идиому»:
String s = "" + 5;
Он также работает в Scala и приводит к java.lang.String
- так же, как в Java.
С другой стороны:
1 + "1"
немного сложнее. Это переведено на:
1.+("1")
, а метод +()
взят из метода Int.+
, расположенного в Int.scala
:
final class Int extends AnyVal {
//....
def +(x: String): String = sys.error("stub")
String
в этом контексте определено в Predef.scala
:
type String = java.lang.String
, который является источником типа " разница ". Как видите, обе строки на самом деле одного типа.