我不了解在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)
}
答案 0 :(得分:2)
person.age++
通过将其年龄增加1来修改现有的person
实例。
person.copy(age = person.age + 1)
另一方面,会返回与Person
具有相同属性的新person
实例,但您指定的age
除外。由于您的示例代码现在是正确的,因此您并未将此新Person
实例分配给任何内容,而是将其丢弃。
当你的类是不可变的(它的所有属性都是copy
)时,这个val
方法很有用 - 而不是修改它,它为你提供了一种简单的方法来创建一个主要是与原始属性相同的属性。