2017-06-26 155 views
1

我剛剛開始從Java來的Scala。斯卡拉隱式類型鑄造

所以我知道,在Scala中,所有的東西都是對象,和Scala最長的令牌(來源:http://www.scala-lang.org/docu/files/ScalaTutorial.pdf)相匹配,所以,如果我理解正確:

var b = 1.+(2) 

,則B是一個雙,再加上和Int ,在Java中這將是一個雙。 但是,當我通過println(b.isInstanceOf[Int])檢查它的類型時,我發現它是一個Int。爲什麼它不像Java中的Double?

回答

3

按照specification

1.不是有效的浮點字面因爲.後強制位丟失。

我相信這是幹過這樣的,正是因爲像1.+(2)表達式應該被解析爲一個整數1,方法調用.,方法名+和方法論證(2)

0

編譯器默認將1和2視爲Ints。你可以使用1.toDouble強制其中任何一個爲雙精度,結果(b)爲雙精度。

順便說一句 - 你的意思是寫1.0 + 2 - 在這種情況下b將是雙?