当前位置: 首页 > 知识库问答 >
问题:

为什么在Kotlin中使用val而不是var?[副本]

茹正初
2023-03-14

我看到一些教程建议在Kotlin中使用val而不是var。我相信val在Java中就像常量,对吗?那么,如果建议使用它而不是var,我们如何更改它的值?

更新:例如:为什么我要使用val而不是var声明类成员(变量或字段)?而在Java中,它就像:

private int variableName;

共有3个答案

拓拔耀
2023-03-14

Kotlin推荐val的原因是,主要使用Kotlin的Android采用了干净的体系结构,每一层维护多个状态,以确保在相互交换数据时状态不变(完整性)
如上文所述,如果值必须在逻辑上更改,请使用var,否则对非常规类型的对象使用val ooo:MutableObject。

微生青青
2023-03-14

我相信val就像Java中的常量,对吗?

如果您的意思是“最终”,那么在值不能更改的意义上是的。请参见此处:

只读局部变量是使用关键字val定义的。只能为它们分配一次值。

...

可以重新分配的变量使用var关键字。

和这里:

Kotlin类中的属性可以使用关键字var声明为可变的,也可以使用关键字val声明为只读的。

继续提问:

那么如果建议使用它而不是var,我们如何更改它的值?

你不能,这就是重点。它告诉阅读它的程序员(以及编译器和JVM)该值不会更改。

我知道函数式编程在静态编程语言中很流行。所以你可能会看到人们说使用val作为一般函数式编程的一部分(它更喜欢创建新的、更新的数据对象而不是修改数据对象的状态)。

徐杰
2023-03-14

val就像java中的最后一个变量。如果不更改值,请使用它。val是不可变的。

var是一个正常的变量,可以改变它的值。var是可变的。

有关此主题的更多信息https://medium.com/techmacademy/kotlin-101-val-vs-var-behind-the-scenes-65d96c6608bf

 类似资料:
  • 在这种情况下我们必须使用val而不是var?我知道val是当我们知道值不会改变的时候。但我的印象是var对所有情况都是好的。是真的吗?换句话说:只用var有问题吗?

  • Kotlin中的和有什么区别? 如本链接所述: 只读属性声明的完整语法与可变属性声明的不同之处在于两个方面:它以val而不是var开头,并且不允许setter。 但就在前面有一个使用setter的示例。 为什么我们两者都需要? 这不是Kotlin中变量的重复,与Java的区别:“var”vs.“val”?因为我询问的是与文档中的特定示例相关的疑问,而不仅仅是一般性的疑问。

  • 我非常熟悉这个框架,从一开始我就喜欢它。 有一件事我还不能完全理解,那就是为什么打字有时会中断。 特别是对于这个问题,,我不确定为什么没有使用,起初我认为可能是int32/int16/float等之间的行为差异。。但(对我来说)这在透明化中是没有意义的。 因此,从lib来看,它需要很好地处理数学问题。 我的问题是关于语义的,为什么决定使用而不是?

  • 在书中,它说的arg是val类型,而不是var类型。为什么会这样。 根据我的理解,每次迭代都会更改arg的值,因为每次循环时它都会保存新的值。 以下是我的问题 null

  • 我看过一些代码,其中人们使用了带有两个“!”的条件子句s 这是我能找到的一些例子。 使用有什么好处超过?