Vamos a ver el uso de Kotlin Destructuring a la hora de trabajar de una forma más sencilla con Kotlin y variables . El concepto de destructuring es uno de los conceptos mas comunes en los nuevos lenguajes de programación. Este concepto hace referencia a como podemos descomponer una clase con sus variables en variables independientes para un manejo más sencillo de estas .
Kotlin nos permite hacer estas operaciones de forma bastante natural . Para ello lo primero que tendremos que definir una clase . En este caso usaremos un Data Class con las propiedades de Persona.
data class Persona (val nombre:String,val apellidos:String,val edad:Int) { }
Una vez definida la clase con sus propiedades podemos imprimir los datos de la clase usando una función Main sencilla:
fun main(args: Array<String>) { val persona= Persona ("pepe","perez",20) println(persona.nombre) println(persona.apellidos) println(persona.edad) }
El resultado es :
Podemos realizar la misma operación realizando un destructuring . En este caso cada propiedad se convertirá en una variable que pasaremos a manejar.
fun main(args: Array<String>) { val persona= Persona ("pepe","perez",20) val (nombre,apellidos,edad)= persona println (nombre) println(apellidos) println(edad) }
El resultado es el mismo
Podemos realizar operaciones diferentes a la hora de realizar un destructuring por ejemplo podemos obtener únicamente una de las variables utilizando guiones bajos en el resto de las propiedades.
fun main(args: Array<String>) { val persona= Persona ("pepe","perez",20) val (nombre,_,_)= persona println (nombre) }
Kotlin Destructuring y Colecciones
Las operaciones de destructuring también pueden afectar al uso de Colecciones como por ejemplo si disponemos de un Mapa con nombres y edades :
fun main() { val map = mapOf("pedro" to 10, "gema" to 30, "ana" to 50) for ((clave , valor) in map) { println("$clave = $valor") } }
En este caso hemos usado destructuring a nivel de la estructura for ya que nos encontramos con un Mapa que almacena claves y valores . Este tipo de almacenamiento permite un destructuring sencillo con Kotlin.
Muchas gracias por tu post, Cecilio. Te sigo desde que estaba en la universidad, me ayudaste a comprender muchas cosas. ¿Qué opinas de la madurez de Kotlin respecto a realizar microservicios con Spring Boot? Adicional a eso, ¿Podrías probar Ktor y decir en futuros posts qué opinas? Muchas gracias.
Creo que puede ser una buena opción , no le he probado porque al final uno apuesta por lo clásico y Spring Boot soporta kotlin , pero creo que las coroutines es un avance importante