2016-06-21 52 views
0

我正在學習scala,試圖理解var變量。在斯卡拉,爲什麼不可能用不同的數據類型來更改var變量的值

看看我下面的代碼

scala> var id =10 
id: Int = 10 

scala> id ="surender" 
<console>:12: error: type mismatch; 
found : String("surender") 
required: Int 
    id ="surender" 

VAR是可變的,這意味着我們可以改變的價值,同時改變我們需要堅持使用相同的數據類型的值?

這是否意味着靜態類型語言?

回答

7

是的斯卡拉確實是一個靜態類型的語言。您不能在運行時重新分配數據類型。

這個概念被稱爲類型安全,很多人都非常重視它。然而,這是一個偏好問題。

var id: Any = 10 // Don't actually do this! 
id = "surender" // works 

如果你不這樣做,編譯器推斷從初始的類型(在這種情況下,類型10是:

0

創建var(或val)時,您可以指定類型Int)。但是,Scala確實是靜態類型的,你可以用Any類型的東西做很少的事情。這比較有用,例如在這種情況下:

var x: Option[Int] = None 
x = Some(10) // doesn't compile without the signature above