Scala中的var和val定义有什么区别?为什么这两种定义都需要?为什么你会选择val而不是var,反之亦然?


当前回答

就像它的名字一样简单。

Var表示它可以变化 Val表示不变

其他回答

区别在于var可以被重新赋值,而val则不能。可变性,或其他任何实际分配的东西,是一个次要问题:

import collection.immutable
import collection.mutable
var m = immutable.Set("London", "Paris")
m = immutable.Set("New York") //Reassignment - I have change the "value" at m.

而:

val n = immutable.Set("London", "Paris")
n = immutable.Set("New York") //Will not compile as n is a val.

因此:

val n = mutable.Set("London", "Paris")
n = mutable.Set("New York") //Will not compile, even though the type of n is mutable.

如果您正在构建一个数据结构,并且它的所有字段都是val,那么该数据结构因此是不可变的,因为它的状态不能改变。

就像它的名字一样简单。

Var表示它可以变化 Val表示不变

Val表示最终值,不能重新赋值

而Var可以在以后重新分配。

Val表示不可变,var表示可变。

完整的讨论。

Val是最终值,即不能设置。在java中考虑final。