我正在学习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是可变的,这意味着我们可以更改值,在更改值时我们是否需要坚持使用相同的数据类型?
这是否意味着静态类型语言?
答案 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