2010-11-11 85 views
3

我讀了關於在不同的值類類型之間進行的隱式轉換。這本書「在Scala編程」規定:值類類型的隱式轉換?

[...]必要時scala.Int類的實例會自動擴大(由隱式轉換),以scala.Long類的一個實例。

(11.1章 - Scala的層次)

什麼是 「必需的」 的意思是在這種情況下?如何讓這個「可見」?我認爲:

scala> var i = Int.MaxValue 
i: Int = 2147483647 

我期待i: Long = 2147483648如果我加1

scala> i = i + 1 
i: Int = -2147483648 

我不希望看到溢出。

回答

6

「必需」表示一個方法,它需要一個Long傳遞一個Int,並且像這樣。

Int.+不需要Long。大多數情況下,Ints的行爲就像Java的原始整數類型一樣。

+0

所以這只是一種方便的方式來傳遞一個「較小」的值類型作爲參數? – rdoubleui 2010-11-11 23:18:39

+1

對。如果你擔心溢出,你需要使用BigInt。出於性能原因,標準的Int類型是基本整數。即大多數時候,您不需要檢查操作,並且它會減慢速度。 – 2010-11-11 23:25:03

+0

謝謝你們! – rdoubleui 2010-11-12 00:14:36