在scala中将Int添加到字符串中
我在理解以下几段scala代码背后的基本原理时遇到了一些困难: 我们都知道REPL中的1+1=2在scala中将Int添加到字符串中,scala,types,casting,return-value,return-type,Scala,Types,Casting,Return Value,Return Type,我在理解以下几段scala代码背后的基本原理时遇到了一些困难: 我们都知道REPL中的1+1=2 scala> 1 + 1 res0: Int = 2 scala> "Abc" + "Def" res6: java.lang.String = AbcDef 如果我输入“Abc”+“Def”,我应该在REPL中得到“AbcDef” scala> 1 + 1 res0: Int = 2 scala> "Abc" + "Def" res6: java.lang.Strin
scala> 1 + 1
res0: Int = 2
scala> "Abc" + "Def"
res6: java.lang.String = AbcDef
如果我输入“Abc”+“Def”,我应该在REPL中得到“AbcDef”
scala> 1 + 1
res0: Int = 2
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”转换为调用者类型
谢谢如果您在Scala 2.10.0上尝试此功能,您将得到答案的线索:
scala> 1.+(1)
<console>:1: warning: This lexical syntax is deprecated. From scala 2.11,
a dot will only be considered part of a number if it is immediately
followed by a digit.
1.+(1)
^
也就是说,将Double
添加到包含在(冗余)括号内的表达式的中缀
对于后者,Scala遵循Java惯例,任何添加到字符串
的内容都会导致字符串
,反之亦然