Scala中的var和val定义有什么区别?为什么这两种定义都需要?为什么你会选择val而不是var,反之亦然?
当前回答
Val表示不可变,var表示可变
您可以将val视为Java编程语言的final key world或c++语言的const key world。
其他回答
在javascript方面,它与
val -> const 是 -> 是
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.
Val值是类型存储常量。一旦创建它的价值不能重新分配。可以用关键字val定义一个新值。
如。val x: Int = 5
这里type是可选的,因为scala可以从赋值推断它。
变量是类型化的存储单元,只要保留内存空间,就可以再次为其赋值。
如。var x: Int = 5
一旦不再需要存储在这两个存储单元中的数据,JVM就会自动取消对它们的分配。
在scala中,值比变量更受欢迎,因为它们给代码带来了稳定性,尤其是在并发和多线程代码中。
Val表示不可变,var表示可变
您可以将val视为Java编程语言的final key world或c++语言的const key world。
就像它的名字一样简单。
Var表示它可以变化 Val表示不变
推荐文章
- 将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对象和对象的区别