gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:48:28 29 4
gpt4 key购买 nike

我不了解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实例分配给任何对象,而是将其丢弃了。

当您的类是不可变的(其所有属性均为 copy)时,此 val方法非常有用-无需修改它,而是为您提供了一种轻松的方法来创建具有与原始属性几乎相同的新实例。

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

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com