通过“访问者”和“复制”处理字段有什么区别
问题描述:
我不明白通过访问者处理字段和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
s) - 不是修改它,而是给你一个简单的方法来创建一个与原始属性基本相同的新实例。
好点! ..我刚刚说过,第一个例子中的年龄是var,第二个是val – Abdellah