Tipos de datos
Todos sabemos que un número y un fragmento de texto son muy diferentes. ¿Cómo lo sabemos? Bueno, se pueden realizar operaciones aritméticas (como la multiplicación) con números, pero no con textos. Kotlin también lo sabe. Por eso, cada variable tiene un tipo que determina qué operaciones posibles se pueden realizar con esa variable y qué valores se pueden almacenar en ella.
Tipos de variables
El tipo de una variable se establece cuando se declara la variable:
val text = "Hola, ahora estoy estudiando Kotlin."
val n = 1
val firstLetter = 'A'
val condition = true
En este caso, Kotlin sabe que text es una cadena, n es un número, firstLetter es un carácter y condition es un booleano. Kotlin determina los tipos de ambas variables automáticamente. Este mecanismo se llama inferencia de tipos.
Por favor, observa el siguiente fragmento de código. Así es como declaramos una variable con inferencia de tipos:
val/var identificador = valor
También puedes especificar el tipo de una variable al declararla:
val/var identificador: Tipo = valor
Ten en cuenta que el nombre del tipo siempre comienza con una letra mayúscula. Declaremos las mismas variables que en el ejemplo anterior y especifiquemos sus tipos:
val text: String = "Hola, ahora estoy estudiando Kotlin."
val n: Int = 1
val firstLetter: Char = 'A'
val condition: Boolean = true
El tipo Int indica que la variable almacena un número entero (0, 1, 2, 100_000_000, …). El tipo String indica que la variable almacena una cadena ("Hola", "John Smith"). Más adelante, aprenderás más sobre estos y otros tipos de datos.
Ves que se pueden usar estas dos formas de declaración de variables en la práctica. Cuando usa la inferencia de tipos, hace que su código sea más conciso y legible, pero en algunos casos, puede ser mejor especificar el tipo.
No es necesario asignarle el valor a una variable en el momento de definirla, podemos hacerlo más tarde. Pero en este caso el compilador no puede inferir el tipo de dato que se le va asignar, y tenemos que decirselo.
val saludo // error
greeting = "hola"
El ejemplo anterior producirá un error de compilación (La variable 'saludo' debe inicializarse), ya que Kotlin no puede inferir el tipo de la variable cuando simplemente se declara. Por el contrario, el ejemplo siguiente sí funciona porque el tipo lo especifica el programador:
val greeting: String // ok
greeting = "hola"