Declaraciones de destructuración
Desempaquete valores en variables
Declaraciones de destructuración es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
Desempaquetar objetos
A veces desea extraer varias propiedades de un objeto a la vez.
Las declaraciones de desempaquetado de Kotlin le permiten asignar varias variables a partir de un solo objeto en una única línea.
Desempaquetado básico
Coloque los nombres entre paréntesis a la izquierda de =. Kotlin asigna los componentes del objeto en ese orden.
Las clases de datos lo admiten automáticamente.
data class User(val name: String, val age: Int)
fun main() {
val user = User("Alice", 30)
val (name, age) = user
println(name)
println(age)
}Cómo funciona
Entre bastidores, la desestructuración llama a los component1(), component2() generados y así sucesivamente.
La posición de cada variable se corresponde con la función de componente correspondiente.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 7)
println(p.component1())
println(p.component2())
}El orden importa
Las variables se corresponden por posición, no por nombre.
La primera variable siempre recibe la primera propiedad del constructor, independientemente del nombre que le asigne.
data class Pair2(val first: Int, val second: Int)
fun main() {
val (a, b) = Pair2(10, 20)
println(a) // first property
println(b) // second property
}Omitir componentes
Use un guion bajo _ para omitir un componente que no necesite.
Esto mantiene limpio el código cuando solo importan algunos valores.
data class User(val name: String, val age: Int, val city: String)
fun main() {
val (name, _, city) = User("Mia", 28, "Paris")
println(name)
println(city)
}Desestructuración en bucles
La desestructuración resulta especialmente útil al iterar sobre colecciones de objetos.
Puede desempaquetar cada elemento directamente en la cabecera de for.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("A", 20), User("B", 25))
for ((name, age) in users) {
println(name + " is " + age)
}
}Desestructurar entradas de un mapa
Los mapas admiten la desestructuración porque sus entradas proporcionan componentes para la clave y el valor.
Esto hace que iterar sobre un mapa resulte muy legible.
fun main() {
val scores = mapOf("Alice" to 90, "Bob" to 85)
for ((name, score) in scores) {
println(name + ": " + score)
}
}Devolver varios valores
Una función puede devolver una clase de datos, y quien la llama puede desestructurar el resultado.
Esta es una alternativa limpia a los parámetros de salida.
data class MinMax(val min: Int, val max: Int)
fun minMax(nums: List<Int>): MinMax {
return MinMax(nums.min(), nums.max())
}
fun main() {
val (low, high) = minMax(listOf(3, 1, 8, 5))
println(low)
println(high)
}Desestructurar Pair y Triple
Las clases Pair y Triple de la biblioteca estándar también admiten la desestructuración.
Resultan prácticas para agrupar elementos rápidamente sin definir una clase.
fun main() {
val pair = Pair("x", 1)
val (label, value) = pair
println(label)
println(value)
}Desestructuración de parámetros de lambdas
Puede desestructurar directamente dentro de la lista de parámetros de una lambda.
Esto es habitual al aplicar un mapeo sobre entradas o pares.
fun main() {
val map = mapOf(1 to "one", 2 to "two")
val text = map.map { (key, value) -> "" + key + "=" + value }
println(text)
}Integración
La desestructuración desempaqueta objetos en variables:
- Use paréntesis a la izquierda de
= - Los componentes se corresponden por posición
- Omita componentes con
_ - Funciona en bucles, lambdas y valores devueltos
data class Result(val ok: Boolean, val message: String)
fun main() {
val (ok, message) = Result(true, "done")
println(ok)
println(message)
}Comprobación rápida
Ponga a prueba su comprensión de las declaraciones de desestructuración.
Repaso
Ha aprendido las declaraciones de desestructuración:
- Desempaquetan un objeto en varias variables
- La correspondencia se realiza por posición mediante
componentN() _omite los componentes que no se necesitan- Funcionan en bucles, mapas, lambdas y valores devueltos
A continuación, usará clases de datos dentro de colecciones, como conjuntos y mapas.
Preguntas frecuentes
¿La lección «Declaraciones de destructuración» es gratis?
Sí — el texto completo de «Declaraciones de destructuración» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Declaraciones de destructuración»?
Desempaquete valores en variables Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Declaraciones de destructuración»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Declaración de data classes
- copy y equals
- Declaraciones de destructuración
- Data classes en colecciones