En este post voy a explicar cómo declarar (y cuál es la diferencia entre) variables, valores y constantes en Kotlin, además de algunas ventajas que tiene cada una.
Variables
Las variables se pueden definir con var y con val, aunque con val ya no se pueden mutar más adelante.
Para declarar una variable se puede indicar su tipo usando dos puntos:
var nombre : String
Y se puede indicar su valor más tarde:
nombre = "Luis"
Otra manera es dejar que el compilador infiera el tipo:
var nombre = "Luis"
Y si queremos declarar la variable, pero no dejar que el compilador infiera el tipo, lo hacemos así:
var nombre : String = "Luis"
Valores con val
Como lo dije, se pueden declarar valores (que son como las constantes) que una vez declarados no pueden ser cambiados.
Para declarar un valor, se debe indicar su valor (valga la redundancia) en su declaración. Ya sea indicando su tipo:
val edad : Int = 22
O dejando que el compilador infiera:
val edad = 22
Pero no se puede declarar y después definir, al menos que sea abstracto. Lo siguiente es incorrecto:
val edad : Int
Constante
Una constante no puede cambiar durante la ejecución del programa (lo mismo hacen los valores), pero aparte de ello, su asignación debe ser constante.
Para declararla se usa const val
.
Por cierto, una constante solo puede ser declarada dentro de un objeto o en la parte superior de una clase, eso lo veremos después, por ahora presta atención en su definición.
Su valor se define así:
object constantes{
const val PI = 3.1416
}
println(constantes.PI)
Pi es 3.1416 y lo sabemos todos, será constante siempre, al menos que cambiemos el valor nosotros manualmente en esa línea.
La diferencia de la constante es que su asignación debe ser constante. Lo siguiente es incorrecto:
object constantes{
const val PI = obtenerPI()
fun obtenerPI() = 3.1416
}
println(constantes.PI)
En este caso, para obtener la constante, estamos llamando a una función. Y aunque esa función devuelve un solo valor, la misma podría devolver otros valores, es decir, nada asegura que esa función siempre devolverá el mismo valor.
Así que esa asignación es errónea.
Conclusión
En conclusión, siempre trata de usar val
. Si realmente requieres que ese valor sea una variable, usa var
.
Utiliza const val
si, por ejemplo, tienes un objeto de constantes, ya que const val no se puede declarar así sin objetos.
Por cierto, si quieres saber todavía más entre la diferencia de val
y var
, mira este post.