Toda clase puede tener un companion object, que es un objeto que es común a todas las instancias de esa clase. Vendría a ser similar a los campos estáticos en Java. Continuar leyendo «Companion Object en Kotlin»
Igualdad Referencial (===) e Igualdad Estructural(==) en Kotlin
Veremos la diferencia entre Igualdad Referencial e Igualdad Estructural en Kotlin.
Continuar leyendo «Igualdad Referencial (===) e Igualdad Estructural(==) en Kotlin»
Kotlin Android Extensions
Esta extensión de Kotlin para Android es sencilla, poderosa y limpia.
En este ejemplo vemos la forma de asignar una acción a un botón mediante Java en la forma «tradicional» y la nueva manera mediante las Kotlin Android Extensions, que nos facilita la legibilidad, y sencillez a la hora de implementarlo.
Toast y SnackBar en Android
Toast
Toast.makeText(this,"Hello from the Toast",Toast.LENGTH_LONG).show() //Parametros: (Contexto,Texto,Duracion)
Snackbar
Añadir al Gradle:
implementation 'com.android.support:design:27.0.0'
**Versiones de las Librerías de Soporte
val layout = findViewById<ConstraintLayout>(R.id.constraint) Snackbar.make(layout,"Hello fron SnackBar!",Snackbar.LENGTH_LONG).show()//Igual que el Toast pero le pasas un View
Snackbar con Botón
==Action Button==>
Snackbar.make(layout,"Hello fron SnackBar!",Snackbar.LENGTH_LONG).setAction("UNDO") { // Parametros de setAction(Texto, Action ó Callback)) Snackbar.make(layout,"Email has been restored!!",Snackbar.LENGTH_LONG).show() }.show()
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.
Hola Mundo con Android Studio y Kotlin
Vamos a crear el Hola Mundo con Android Studio y Kotlin. Seguiremos los siguientes pasos:
1.- Abrimos Android Studio y seleccionamos File->New-> New Project
2.- En la pantalla que emerge, hacer los siguientes pasos:
- Darle un nombre al proyecto
- Darle un nombre de dominio
- Lo más importante, si trabajamos con Kotlin, marcar la casilla Include Kotlin Support al final de la pantalla.
3.- En la siguiente pantalla seleccionaremos la versión mínima que soportara el proyecto.
Al seleccionar versiones más antiguas, tendremos el soporte a más dispositivos.
Por contra, entre más antiguo sea el soporte, más funcionalidades nuevas perderemos, ya que no serían soportadas por todas las versiones.
Si pulsamos en Help me choose, nos saldrán todas las versiones con las mejoras de cada una de ellas, y el porcentaje de móviles Android en el mundo que podremos abarcar dando soporte.
Por ejemplo en esta gráfica a dia de hoy, si implementáramos de versión mínima la 4.4 KitKat, daríamos soporte a el 90.1% de los móviles Android en el mundo.
4.- La siguiente ventana nos muestran plantillas por si quisiéramos arrancar el proyecto con alguna de ellas. Casi siempre empezaremos el proyecto con la EmptyActivity
5.- En esta ventana le daremos un nombre, por defecto dejamos el MainActivity.
* La casilla Backwards Compatibility(AppCompat) es para tener compatibilidad con versiones antiguas.
6.- Damos a Finalizar y se nos crea el proyecto
7.- Una vez finalizado, se nos crean dos archivos, uno con codigo kotlin y otro con la vista del Hola Mundo.
8.- Si le damos al Play nos abrirá el emulador de un móvil y lanzara la aplicación a él.
Koans Kotlin
¿ Qué es Kotlin?
¿Qué es Kotlin?
Kotlin es un lenguaje de programación estrictamente tipado (obliga a definir el tipo de la variable) para aplicaciones multiplataformas modernas(JVM, Android, JAvascript, Native).
*Ventajas Tipado Estático:
Mayor velocidad de ejecución ya que solo valida solo en tiempo de compilación.
Nos ahorramos errores de tipado en tiempos de compilación, el IDE nos ayuda a completar el código y nos lanzaría los errores.
- Lenguaje creado y desarrollado por JetBrains en 2010.
- Es de código libre
- Orientado a objetos con capacidades de programación funcional lo cual le hace tomar ambas ventajas
- Cuando compilamos código para Android producimos byte code java, código en bytes, 100% compatible con Java y JVM.
- Google, Amazon … lo usan.