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。
推荐文章
- 将JAR文件添加到Spark作业- Spark -submit
- Scala中的JavaConverters和JavaConversions有什么区别?
- 在Scala 2.8中<:<、<%<和=:=是什么意思?它们被记录在哪里?
- Scala vs Python的Spark性能
- 什么时候我应该在Scala中选择向量?
- 在Scala中,foldLeft和reducleft的区别
- 好的scalaz介绍
- Akka Kill vs Stop vs Poison Pill?
- 如何开始与Akka流?
- Scala 2.8 breakOut
- 如何克隆一个案例类实例,只改变一个字段在Scala?
- ':_* '(冒号下划线*)在Scala中有什么作用?
- 定义一个函数时,“def”和“val”有什么区别
- 在Scala中获取列表中的项目?
- case对象和对象的区别