2016-06-21 4 views
0

私は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

はいScalaは確かに静的型付き言語です。実行時にデータ型を再割当てすることはできません。

コンセプトはタイプセーフティと呼ばれ、多くの人々がそれを深く評価しています。しかしそれは好みの問題です。あなたは、10のこのケースタイプでコンパイラ推論初期化子からの型が(あるいない場合

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

var(またはval)を作成するときに

0

あなたはタイプを指定することができますInt)。しかし、Scalaは実際に静的に型付けされており、タイプAnyのものは役に立ちます。これはより有用である。この状況では:

var x: Option[Int] = None 
x = Some(10) // doesn't compile without the signature above 
関連する問題