在Scala中,为什么不能使用不同的数据类型更改var变量的值

时间:2016-06-21 07:30:48

标签: scala

我正在学习scala,试图理解var变量。

查看下面的代码

scala> var id =10
id: Int = 10

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

var是可变的,这意味着我们可以更改值,在更改值时我们是否需要坚持使用相同的数据类型?

这是否意味着静态类型语言?

2 个答案:

答案 0 :(得分:8)

是的,Scala确实是一种静态类型的语言。您无法在运行时重新分配数据类型。

这个概念被称为类型安全,很多人都非常重视它。然而,这是一个偏好的问题。

答案 1 :(得分:0)

您可以在创建var(或val)时指定类型:

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

如果您不这样做,编译器会从初始值设定项中推断出类型(在这种情况下,10的类型为Int)。但是,Scala确实是静态类型的,并且很少有人可以对Any类型的内容进行有用的处理。这更有用,例如在这种情况下:

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