¿Cuál es la diferencia entre var
y val
en Kotlin?
He pasado por este enlace:
https://kotlinlang.org/docs/reference/properties.html
Como se indica en este enlace:
La sintaxis completa de una declaración de propiedad de solo lectura difiere de una mutable de dos maneras: comienza con val en lugar de var y no permite un setter.
Pero justo antes hay un ejemplo que usa un setter.
fun copyAddress(address: Address): Address {
val result = Address() // there's no 'new' keyword in Kotlin
result.name = address.name // accessors are called
result.street = address.street
// ...
return result
}
¿Cuál es la diferencia exacta entre var
y val
?
¿Por qué necesitamos ambos?
Este no es un duplicado de Variables en Kotlin, diferencias con Java. var vs val? ya que estoy preguntando sobre la duda relacionada con el ejemplo particular en la documentación y no solo en general.
result
no se puede cambiar para referirse a una instancia diferente deAddress
, pero la instancia a la que se refiere todavía se puede modificar. Lo mismo sería cierto en Java si tuvieras unfinal Address result = new Address();