通过“访问者”和“复制”处理字段有什么区别

我不明白通过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方法非常有用,而不是修改它,它给了你一个简单的方法来创建一个与原始属性基本相同的新实例。