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

在kotlin Android中使用var或val?[副本]

费秦迟
2023-03-14

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

共有1个答案

柳坚白
2023-03-14

假设您有一个非常长的函数,它在开始时声明了一些val。您现在立即知道它的值在长代码体中的任何地方都不会改变。如果它是一个var,那么您必须阅读整个代码,以尝试理解在函数的任何给定点存储在该变量中的内容。因此,val的目的是通过明确这个值绝对不会改变来简化对复杂代码的理解,您不需要阅读代码的其余部分来确定这一点。

 类似资料:
  • 我看到一些教程建议在Kotlin中使用val而不是var。我相信val在Java中就像常量,对吗?那么,如果建议使用它而不是var,我们如何更改它的值? 更新:例如:为什么我要使用val而不是var声明类成员(变量或字段)?而在Java中,它就像:

  • 我浏览了有效的scala幻灯片,在幻灯片10中提到,不要在抽象成员的中使用,而是使用。幻灯片没有详细提到为什么在中使用抽象是反模式。如果有人能解释在抽象方法的特征中使用val vs def的最佳实践,我将不胜感激

  • 在Kotlin中,< code>var是可变的,而< code>val只能赋值一次。 但是,请考虑以下示例中的< code>val foo: 每次尝试访问,都会执行方法,从而产生不同的val值。 由于< code>foo的值在变化,所以我尝试使用< code>var。然后编译器抱怨“属性必须初始化”。所以我必须给它一个默认值: 这两种方法我都不喜欢。正确的做法是什么?

  • 为什么Kotlin删除了在Java中非常有用的final或val函数参数?

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