¿Cuál es la diferencia entre manejar campos a través de "accesor" y "copyr"

No entiendo la diferencia entre manejar un campo a través del acceso y el método de copy en Kotlin. Es así:

Ejemplo de accesorios:

class Person(val name: String, var age: Int) fun happyBirthday(person: Person) { person.age++ } 

Ejemplo de método de copy:

 data class Person(val name: String, var age: Int) fun happyBirthday(person: Person) { person.copy(age = person.age + 1) } 

 person.age++ 

modifica su instancia de person existente al boost su edad en 1.

 person.copy(age = person.age + 1) 

por otro lado, devuelve una nueva instancia de Person que tiene las mismas properties que la person , a exception de la age que ha especificado. Como su código de muestra es ahora, no está asignando esta nueva instancia de Person a nada, solo la está tirando.

Este método de copy es útil cuando su class es inmutable (todas sus properties son val ); en lugar de modificarla, le ofrece una manera fácil de crear una nueva instancia que tenga en su mayoría las mismas properties que el original.

  • Android Studio - java.io.IOException: no se pudo generar la firma v1
  • kotlin inversa boolean seguro de casting
  • Visibilidad de Kotlin de los miembros nesteds
  • No se puede ejecutar el file jar. (Error: no se pudo encontrar o cargar la class principal co.pissarra.Mainkt)
  • Analizando json con API remota rota
  • ¿Cómo manejar la accesibilidad en la vista personalizada cuando no está diseñada para manejar clics?
  • Método modificado con nueva condición
  • Kotlin @JvmStatic y anulación accidental en un object complementario
  • Hibernate guarda la entidad hija con nulo ID padre
  • secuencias infinitas kotlin con function de iterador
  • Cómo comstackr el código de testing de unidad de Kotlin que usa hamcrest 'is'