En Kotlin se pueden definir variables de dos maneras: usando val
y usando var
. En este post voy a explicar la diferencia entre cada una de ellas.
Val y var en Kotlin
Si vienes de Java, val
es el equivalente a declarar una variable como final
. Es decir, una vez que la asignas ya no puedes modificarla.
var
es como declarar una variable que, como su nombre lo dice, es variable; puedes reasignar su valor.
val es inmutable, var es mutable.
Val
Cuando declaras con val
y le asignas un valor, ya no puedes asignarle otro. Lo siguiente es incorrecto y genera un error de Val cannot be reassigned:
fun main() {
val nombre: String
nombre = "Luis"
nombre = "María José"
println(nombre)
}
Recuerda que para declarar con val
puedes hacerlo como en el ejemplo de arriba, u omitiendo su tipo:
val nombre = "Luis"
O indicando su tipo y su valor:
val nombre : String = "Luis"
Por cierto, no se puede cambiar el valor de la variable, pero cuando hablamos de objetos, sí se pueden cambiar las propiedades de los mismos.
Lo siguiente es correcto:
val perro = Mascota()
perro.nombre = "Maggie"
perro.nombre = "Guayaba"
Ya que no estamos reasignando, simplemente estamos cambiando propiedades internas.
Var
Las variables con var
se pueden cambiar en cualquier momento; obviamente respetando los tipos de datos, es decir, no puedes asignar un entero a una variable que es de cadena.
Se puede declarar con valor, con tipo y valor, o declararla y después asignarla:
// Dejar que se infiera
var peso = 15.0f
// Declarar con tipo y valor
var nombre : String = "Luis"
// Declarar y asignar más tarde
var edad : Int
edad = 22
println(nombre)
println(edad)
println(peso)
También se puede reasignar las veces que sea necesario:
var nombre : String
nombre = "Luis"
println(nombre)
nombre = "María José"
println(nombre)
nombre = "Fernando"
println(nombre)
¿Cuál debería usar?
Siempre trata de usar val; si programas en Android vas a declarar los elementos como botones, edittexts, etcétera como val.
También usa val para definir valores que no vas a cambiar a través del tiempo.
Si tu código no permite usar val, usa var. Es decir, si necesitas forzosamente cambiar la variable a cada momento entonces simplemente usa var y no te compliques la vida.
Pingback: Variables y constantes en Kotlin - Parzibyte's blog