copy - 通过 "accessor"和 "copy"处理字段有什么区别

标签 copy kotlin accessor

我不明白 Kotlin 中通过访问器和复制方法处理字段之间的区别。是这样的:

访问器示例:

class Person(val name: String, 
             var age: Int)

fun happyBirthday(person: Person) {
    person.age++
}

复制方法示例:

data class Person(val name: String, 
             var age: Int)

fun happyBirthday(person: Person) {
    person.copy(age = person.age + 1)
}

最佳答案

person.age++

通过将年龄增加 1 来修改现有的 person 实例。

person.copy(age = person.age + 1)

另一方面,返回一个 Person 的新实例,它与 person 具有相同的属性,但您的 age 除外。已指定。正如您现在的示例代码一样,您没有将这个新的 Person 实例分配给任何东西,您只是将其丢弃。

当您的类是不可变的(其所有属性都是 val)时,此 copy 方法非常有用 - 它为您提供了一种简单的方法来创建它,而不是修改它一个与原始实例具有基本相同属性的新实例。

关于copy - 通过 "accessor"和 "copy"处理字段有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230515/

相关文章:

file - 将特定行从一个文件复制到另一个文件的 unix 命令是什么?

C++ 复制构造函数,赋值 'operator='

Android 12 ForegroundServiceStartNotAllowedException 在前台?

java - 一个不可变的类成员应该有一个访问方法还是允许公开?

java - 获取 Google map 纬度和经度坐标

MySQL克隆一个表,修剪一些数据,然后热交换它们的名称

c# - 为什么要复制对象?

android - Sms BroadCastReceiver 泄漏内存

android - Kotlin 中的密封类,不兼容类型错误无法返回父类型

c# - 向属性访问器添加扩展方法