kotlin - Kotlin 中 var 和 val 有什么区别?

标签 kotlin variables

Kotlin 中 varval 有什么区别?

我已浏览此链接:

KotlinLang: Properties and Fields

正如此链接所述:

The full syntax of a read-only property declaration differs from a mutable one in two ways: it starts with val instead of var and does not allow a setter.

但之前有一个使用 setter 的示例。

fun copyAddress(address: Address): Address {
    val result = Address() // there's no 'new' keyword in Kotlin
    result.name = address.name // accessors are called
    result.street = address.street
    // ...
    return result
}

varval 之间的确切区别是什么?

为什么我们需要两者?

不是 Variables in Kotlin, differences with Java: 'var' vs. 'val'? 的重复项因为我询问的是与文档中的特定示例相关的疑问,而不仅仅是一般性的疑问。

最佳答案

在您的代码中,result 没有改变,它的 var 属性正在改变。引用以下评论:

fun copyAddress(address: Address): Address {
    val result = Address() // result is read only
    result.name = address.name // but not their properties.
    result.street = address.street
    // ...
    return result
}

val 与java中的final修饰符相同。您可能应该知道,我们不能再次分配给 final 变量,但可以更改其属性。

关于kotlin - Kotlin 中 var 和 val 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60999454/

相关文章:

collections - Java Stream.collect 的 Kotlin 等价物是什么?

PHP - mySQL查询中的几个变量

c - 指针 - 困惑

android - 由于 kotlin,Android 中的 Gradle 同步失败

java - 使用 Kotlin 的数字运算是否与使用 Java 原语的运算一样快?

android - Tasks.await(task)显示不适当的阻塞方法调用警告

javascript - 如何在我的 HTML 中使用来自外部 .js 文件的变量?

php - 如何在 mysql php 中创建表时正确包含 var

c# - 我如何将整个路径从 python 传递到 c#?

junit - KotlinTestEngine.discover()不返回任何测试