Scala 中有两种变量:val
和var
。val
类似于 Java 中的final
变量,一旦初始化后,val
变量就不可以再被赋值。var则类似于 Java 中的非final
变量,可以在作用域中多次赋值。
1. val
scala> val msg = "Hello, world!"
val msg: String = Hello, world!
在 Scala 中之所以不需要定义变量,是因为它有着强大的类型推断(type inference)的能力,这一点在很多高级语言中都有体现,例如 Python 和 R。当然,我们也可以显式地指定变量的具体类型,以下两种指定字符串类型变量的方式:
scala> val msg: java.lang.String = "Hello, world!"
val msg: String = Hello, world!
scala> val msg: String = "Hello, world!"
val msg: String = Hello, world!
☔ 值得一提的是,
java.lang.String
在 Scala 中的简化就是String
。
2. var
前面提到过,val
指定的变量不可修改,如果我们想要定义可修改的变量,则需要使用var
进行定义:
scala> var greeting = "Hello, world!"
var greeting: String = Hello, world!
scala> greeting = "Hello, yumingmin!"
// mutated greeting