¿Cuál es la diferencia entre var y val en Kotlin?
¿ Cuál es la diferencia entre var
y val
en Kotlin?
He pasado por este enlace:
KotlinLang: propiedades y campos
Como se indica en este enlace:
La sintaxis completa de una declaración de propiedad de solo lectura difiere de una mutable en dos formas: comienza con val en lugar de var y no permite un definidor.
Pero justo antes hay un ejemplo que utiliza un definidor.
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?
Esto no es un duplicado de Variables en Kotlin, diferencias con Java: ¿'var' vs. 'val'? ya que pregunto sobre la duda relacionada con el ejemplo particular en la documentación y no solo en general.
En su código result
no cambia, sus var
propiedades cambian. Consulte los comentarios a continuación:
fun copyAddress(address: Address): Address {
val result = Address() // result is read only
result.name = address.name // but not their properties.
result.street = address.street
// ...
return result
}
val
es el mismo que el final
modificador en java. Como probablemente debería saber, no podemos final
volver a asignar una variable, pero podemos cambiar sus propiedades.
Ambos val
y var
se utilizan para declarar variables.
var
es como una variable general y se conoce como variable mutable en Kotlin y se puede asignar varias veces.val
es como una variable final y se conoce como inmutable en Kotlin y solo se puede inicializar una vez.
Para obtener más información sobre qué es val
y var
consulte el siguiente enlace:
http://blog.danlew.net/2017/05/30/mutable-vals-in-kotlin/