Scala中的var和val定义有什么区别?为什么这两种定义都需要?为什么你会选择val而不是var,反之亦然?
当前回答
Val表示最终值,不能重新赋值
而Var可以在以后重新分配。
其他回答
val表示不可变,var表示可变
解释一下,“val表示值,var表示变量”。
A distinction that happens to be extremely important in computing (because those two concepts define the very essence of what programming is all about), and that OO has managed to blur almost completely, because in OO, the only axiom is that "everything is an object". And that as a consequence, lots of programmers these days tend not to understand/appreciate/recognize, because they have been brainwashed into "thinking the OO way" exclusively. Often leading to variable/mutable objects being used like everywhere, when value/immutable objects might/would often have been better.
简单来说:
var = 变量
Val =变量+ final
Val表示最终值,不能重新赋值
而Var可以在以后重新分配。
Val是最终值,即不能设置。在java中考虑final。
虽然很多人已经回答了Val和var之间的区别。 但是需要注意的一点是val并不完全像final关键字。
我们可以用递归改变val的值,但我们永远不能改变final的值。Final比Val更恒定。
def factorial(num: Int): Int = {
if(num == 0) 1
else factorial(num - 1) * num
}
方法参数默认为val,并且在每次调用时都会更改值。
推荐文章
- Scala 2.8 breakOut
- 如何克隆一个案例类实例,只改变一个字段在Scala?
- ':_* '(冒号下划线*)在Scala中有什么作用?
- 定义一个函数时,“def”和“val”有什么区别
- 在Scala中获取列表中的项目?
- case对象和对象的区别
- Scala中的Case对象与枚举
- 任务不可序列化:java.io.NotSerializableException,当只对类而不是对象调用闭包外部的函数时
- 在Scala中将一个元素附加到列表的末尾
- 在Scala中按名称调用vs按值调用,需要澄清
- 解析命令行参数的最佳方法?
- Android Scala编程
- lazy val做什么?
- Scala:抽象类型vs泛型
- 如何在准引用中使用无形?