Scala中这个隐式演员的背后是什么?

Hon*_*hen 4 casting scala

我不熟悉Scala并在使用交互模式时遇到以下问题:

scala>"abc"+4
res0: java.lang.String = abc4
scala>4+"abc"
res1: String = 4abc
Run Code Online (Sandbox Code Playgroud)

我很好奇的是结果的类型如何不同(java.lang.Stringvs String).在Seven Weeks的Book Seven Languages中,两种类型都是java.lang.String.

顺便说一句,scala解释器的版本是2.9.1.

Rég*_*les 7

在JVM上,scala String只是一个别名java.lang.String.事实上,Repl有时会将类型显示为String有时 java.lang.String只是次要(REPL特定)故障,不会以任何方式影响运行时行为.

对于它的价值,这是我在scala 2.10-RC1中得到的:

scala> "abc"+4
res0: String = abc4

scala> 4+"abc"
res1: String = 4abc
Run Code Online (Sandbox Code Playgroud)