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

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

问题描述:

我不明白通过访问者处理字段和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) - 不是修改它,而是给你一个简单的方法来创建一个与原始属性基本相同的新实例。

+0

好点! ..我刚刚说过,第一个例子中的年龄是var,第二个是val – Abdellah