Scala隐式类型转换

时间:2017-06-26 18:07:00

标签: scala types casting

我刚刚开始使用Scala来开发Scala。

所以我知道在Scala中,所有东西都是对象,Scala匹配最长的令牌(来源:http://www.scala-lang.org/docu/files/ScalaTutorial.pdf),所以如果我理解正确的话:

var b = 1.+(2)

然后b是Double,plus和Int,在Java中是Double。 但是当我通过println(b.isInstanceOf[Int])检查它的类型时,我发现它是一个Int。为什么它不像Java中的Double?

2 个答案:

答案 0 :(得分:3)

根据specification

  

1.不是有效的浮点文字,因为缺少.后的必填数字。

我相信它就是这样完成的,因为像1.+(2)这样的表达式应该被解析为整数1,方法调用.,方法名称+和方法参数{ {1}}。

答案 1 :(得分:0)

默认情况下,编译器会将1和2视为Ints。您可以使用1.toDouble强制其中任何一个为Double,结果(b)将为double。

顺便说一下 - 你的意思是写1.0 + 2 - 在这种情况下,b会是双倍的吗?