Scala 中有两种变量:valvarval类似于 Java 中的final变量,一旦初始化后,val变量就不可以再被赋值。var则类似于 Java 中的非final变量,可以在作用域中多次赋值。

1. val

  1. scala> val msg = "Hello, world!"
  2. val msg: String = Hello, world!

在 Scala 中之所以不需要定义变量,是因为它有着强大的类型推断(type inference)的能力,这一点在很多高级语言中都有体现,例如 Python 和 R。当然,我们也可以显式地指定变量的具体类型,以下两种指定字符串类型变量的方式:

  1. scala> val msg: java.lang.String = "Hello, world!"
  2. val msg: String = Hello, world!
  3. scala> val msg: String = "Hello, world!"
  4. val msg: String = Hello, world!

☔ 值得一提的是,java.lang.String在 Scala 中的简化就是String

2. var

前面提到过,val指定的变量不可修改,如果我们想要定义可修改的变量,则需要使用var进行定义:

  1. scala> var greeting = "Hello, world!"
  2. var greeting: String = Hello, world!
  3. scala> greeting = "Hello, yumingmin!"
  4. // mutated greeting