- 1

Fundamentos de Kotlin: Variables, funciones y estructuras de datos
01:47 - 2

Instalación y configuración de IntelliJ IDEA para Kotlin
11:16 - 3

Creación de proyecto Kotlin en IntelliJ y primer programa
13:47 - 4

Variables y tipos de datos básicos en Kotlin
20:58 - 5

Operadores aritméticos y módulo en Kotlin
14:28 - 6

Operadores lógicos AND, OR y NOT en programación
20:51 - 7

Manejo de valores nulos y operadores seguros en Kotlin
12:30 - 8

Lectura de datos por consola con readLine() en Kotlin
14:49 quiz de Fundamentos de Kotlin
Funciones de alto orden y lambdas en Kotlin
Clase 21 de 35 • Curso de Kotlin
Contenido del curso
- 9

Creación de funciones en Kotlin para organizar código
20:21 - 10

Condicionales en Kotlin: if/else
17:14 - 11

Estructura when de Kotlin para múltiples condiciones
17:44 - 12

Arrays y listas mutables en Kotlin: creación y manipulación
18:19 - 13

Listas inmutables y mutables en Kotlin
10:13 - 14

Ciclos for, while y do while en Kotlin para iterar colecciones
18:57 quiz de Contro de Flujo y Funciones
- 15

Creación de clases y objetos en Kotlin
17:05 - 16

Getters y setters en Kotlin: validación y propiedades calculadas
14:38 - 17

Dataclases en Kotlin: ventajas sobre clases normales
16:46 - 18

Enums en Kotlin: Constantes organizadas para casos específicos
20:33 - 19

Manejo de excepciones con Try Catch Finally en Kotlin
19:40 quiz de Programación Orientada a Objetos en Kotlin
- 20

Extension functions en Kotlin para ampliar clases existentes
18:14 - 21

Funciones de alto orden y lambdas en Kotlin
22:37 - 22

Uso de lambdas y funciones de alto orden en arrays y colecciones
10:05 - 23

Scope functions de Kotlin: let, apply y run para manipular objetos
15:30 - 24

Funciones with y also en Kotlin para operaciones múltiples
11:09 - 25

Modificadores de visibilidad y encapsulamiento en Kotlin
17:06 - 26

Interfaces y patrón repository en Kotlin para gestión de datos
20:00 quiz de Características Avanzadas de Kotlin
- 31

Creación de modelos y repositorios para simulador de emails en Kotlin
22:57 - 32

Creación de clase service para coordinar repositorios en Kotlin
18:19 - 33

Implementación de funciones avanzadas del servicio Inbox en Kotlin
21:19 - 34

Interfaz por consola para gestión de correos en Kotlin
16:50 - 35

Pruebas de funcionalidades de correo en Kotlin
07:32
Las funciones de alto orden son herramientas potentes que permiten pasar lambdas o funciones como parámetros. Esta característica, presente en lenguajes como Kotlin, nos brinda flexibilidad para manejar comportamientos de manera eficiente y clara.
¿Qué son las funciones de alto orden y las lambdas?
En Kotlin, una función de alto orden es aquella que recibe otra función (o lambda) como parámetro o devuelve una función como resultado. Una lambda es una variable que representa directamente una función, permitiéndonos escribir código conciso y expresivo.
Al definir una lambda, especificamos claramente los parámetros de entrada, señalamos con -> el tipo que retorna, y dentro de corchetes implementamos la acción de la lambda:
val formatearEmail: (Email) -> String = { email ->
"${email.subject} de ${email.sender}"
}
Si deseamos referirnos al parámetro de entrada de manera implícita, podemos usar la palabra reservada it, siempre que haya un único parámetro.
¿Cómo aplicar la función map con lambdas a una lista?
La función map es una de las más usadas para aplicar transformaciones sobre listas. Mediante ésta, puedes pasar una lambda para modificar cada uno de los elementos:
val emailsFormateados = emails.map(formatearEmail)
Este fragmento muestra cómo map recibe como parámetro otra función o lambda y aplica la transformación indicada a cada elemento de la lista original.
¿Cómo usar la función forEach?
Otra función de alto orden muy utilizada es forEach. Esta permite recorrer elementos devolviendo cada ítem a través de una lambda, proporcionando otra forma más concisa de iterar sobre listas:
emailsFormateados.forEach { correo ->
println(correo)
}
Si necesitas además el índice de cada iteración, Kotlin ofrece forEachIndexed que entrega también este dato en la lambda:
emailsFormateados.forEachIndexed { índice, correo ->
println("Correo número $índice: $correo")
}
¿Qué son los callbacks con lambdas y cómo usarlos?
Los callbacks con lambdas permiten responder a distintos resultados dentro de la ejecución de una función. Este mecanismo, comúnmente implementado en operaciones asíncronas o validaciones, posibilita gestionar diversos enfoques según el éxito o fracaso del método llamado.
fun enviarEmail(email: Email, onSuccess: (Email, String) -> Unit, onError: (String, Int) -> Unit) {
if (email.sender.contains("@")) {
val mensaje = "Enviado a ${email.sender}"
onSuccess(email, mensaje)
} else {
onError("Email inválido", 400)
}
}
En este ejemplo, la función acepta dos callbacks: uno que se activa cuando la operación tiene éxito, devolviendo un mensaje adecuado, y otro para manejar posibles errores indicando un código concreto. Se invocan como una función convencional:
enviarEmail(emailUno, { e, mensaje ->
println("${e.subject} $mensaje")
}, { mensaje, error ->
println("Error: $mensaje Código: $error")
})
Esta estructura potencia tu código brindando claridad y organización.
¿Te ha resultado práctico este abordaje de funciones de alto orden y lambdas? Comparte cómo estás aplicando estos conceptos en tus propios proyectos.