Variables y Tipos en Kotlin

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.