我不明白 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/