我刚刚开始使用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?
答案 0 :(得分:3)
1.
不是有效的浮点文字,因为缺少.
后的必填数字。
我相信它就是这样完成的,因为像1.+(2)
这样的表达式应该被解析为整数1
,方法调用.
,方法名称+
和方法参数{ {1}}。
答案 1 :(得分:0)
默认情况下,编译器会将1和2视为Ints。您可以使用1.toDouble
强制其中任何一个为Double,结果(b)将为double。
顺便说一下 - 你的意思是写1.0 + 2 - 在这种情况下,b会是双倍的吗?