通过“访问者”和“复制”处理字段有什么区别
我不明白通过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
方法非常有用,而不是修改它,它给了你一个简单的方法来创建一个与原始属性基本相同的新实例。