Tipos de Variables
Las «variables» pueden ser mutables e inmutables(constantes).
variables -> var
constantes -> val
Declaración de Variables
Los tipos son definidos después del nombre de la variable, con dos puntos y espacio( var nombre:tipo).
También se puede emitir el tipo en la declaración y Kotlin «inteligentemente» (porque el compilador infiere de manera implícita el tipo usando interfaz tipo), asume el tipo introducido.
val firstName: String = "Ruben" // String porque se lo hemos especificado val lastName = "Tejera" // String porque kotlin ve su contenido y lo da por hecho
Interfaz Tipo o Deducción del Tipo
Es un mecanismo empleado por el compilador para averiguar el tipo desde el contexto. Este mecanismo ayuda a reducir el código empleado.
val name = "Ruben" // El compilador le infiere el tipo String val age = 30 // El compilador le infiere el tipo Int
**Aun declarando una variable mutable, no se puede cambiar a otro tipo de valor más adelante, solamente a valores del mismo tipo.
var edad: Int = 30 //Declaracion de una variable edad = "30" //Aun siendo una variable no podremos asignarle un dato de distinto tipo edad = 25 //Siendo del mismo tipo, podemos modificar el valor de la variable
Se recomienda el uso de variables inmutables (constantes)(val) siempre que sea posible.
Aclarar que no se puede hacer una declaración de múltiples variables en una misma linea como en Java. Hay que realizarlas en lineas diferentes:
val name = "Ruben", lastName = "Tejera" // No funciona en Kotlin //En Kotlin val name = "Ruben" val lastName = "Tejera"
https://devexperto.com/variables-kotlin/
Tipos Básicos
- Tipos númericos:
- Int: Para enteros de hasta 32bits. –> val numeroDias: Int = 36526
-
- Long: Para enteros de hasta 64bits. –> val numeroCochesMundo: Long = 384400000L
- Short: Para enteros de hasta 16bits.. –> val diasAno: Byte = 3650
- Byte: Para enteros de hasta 8bits. –> var edad: Byte = 30
- Float: Para decimales de hasta 32bits. –> var peso: Float = 86.7F
- Double: Para decimales de hasta 64bits. –> var temperatura: Double = 12.23
- Char: Para almacenar caracteres de forma individual. –> var letraDNI: Char = ‘D’
- Boolean: Para almacenar los valores lógicos true y false. –>val esUnaVariable: Boolean = true
- String: Permite almacenar cadenas de caracteres.–> var nombre: String = «Ivan»
- Arrays: Permite almacenar listas de objetos. –>val misColoresFavoritos = arrayOf(«naranja», «azul», «rojo», «negro»)
Números
Para convertir un numero de un tipo a otro hay que invocar de manera explicita la función de conversión correspondiente. No hay conversión implícita entre tipos de números.
var edad = 19 var edadDinosaurio: Long = edad //Error, No hay conversión de manera implícita var edadDinosaurio: Long = edad.toLong()
val edad = "30".toInt()
Cadenas
Pueden ser creadas con comillas dobles o triples
var cadena1 = "Hola Mundo \n Adios Mundo!" //Java Style var cadena2 = """ Hola Mundo Adios Mundo """ //Kotlin Style
String Templates, Plantillas de cadena o Interpolacion de cadena
var points = 9; var maxPoints = 10; var cadena1 = "Hola tengo " + points + " puntos sobre " + maxPoints // Java Style var cadena2 = "Hola tengo $points puntos sobre $maxPoints" // Kotlin Style var cadena3 = "Hola tengo {$points * 10} puntos sobre {$maxPoints * 10}" // Kotlin Style
Como vemos se puede crear lógica dentro de las llaves
val age = 40 val anotherMessage = "You are ${if (age > 60) "old" else "young"}" // You are young
Arrays o Arreglos
Hay dos manera de crear un array, con la función arrayOf() o el constructor Array():
Funcion arrayOf()
Se crean usando arrayOf() :
val myArray = arrayOf(4, 5, 7, 3)
Se puede crear un array mixto:
val myArray = arrayOf(4, 5, 7, 3, "Chike", false)
Podemos decirle en la declaración del array que todos los valores van a ser de un tipo determinado:
val ejemploArrray = arrayOf<Int>(4, 5, 7, 3) val ejemploArray2 = intArrayOf(4, 5, 7, 3)
Para crear un array vacío lo haremos mediante arrayOfNulls():
var arrayEjemplo = arrayOfNulls<Int>(10) //Solo acepta Int
Constructor Array()
El constructor de esta clase requiere un tamaño y una función lambda (una manera simple en línea de declarar una función anónima). En este caso, el trabajo de la función lambda es inicializar el arreglo con elementos.
val numbersArray = Array(5, { i -> i * 2 }) // {0,2,4,6,8}
En este ejemplo:
- Primer argumento: Tamaño del arreglo.
- Segundo argumento: Toma una función lambda, la cuál toma el índice del elemento del arreglo y después devuelve el valor para ser insertado en ese índice en el arreglo.