- 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
Uso de lambdas y funciones de alto orden en arrays y colecciones
Clase 22 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
Dominar las funciones lambda y high order functions es clave cuando trabajamos con arrays y colecciones en programación. Estas herramientas permiten transformar, filtrar y buscar información de manera eficiente y limpia dentro de listas de datos.
¿Qué son las funciones lambda?
Las funciones lambda, conocidas también como funciones anónimas, son expresiones breves que no tienen un nombre específico y suelen emplearse en operaciones rápidas o puntuales. Usadas frecuentemente en combinación con métodos como map o filter, son sumamente útiles en manipulación de listas o colecciones.
Por ejemplo, podemos transformar emails de esta manera:
emails.map { email -> formatear(email) }
Esta simple línea convierte cada email de una colección al formato deseado.
¿Cómo filtrar colecciones utilizando high order functions?
Las high order functions no se limitan únicamente a transformar elementos. También pueden filtrar listas aplicando condiciones específicas que cumplen ciertos elementos.
Si queremos filtrar correos electrónicos que comienzan con la letra 'a', utilizamos algo así:
val filtrados = emails.filter { it.sender.first() == 'a' }
Aquí obtendremos únicamente los correos que inicien con el carácter 'a', devolviendo la lista filtrada.
¿Cómo encontrar elementos específicos usando funciones avanzadas?
Además del filtrado y la transformación, podemos buscar un único elemento que cumpla una condición particular por medio de métodos como first o last.
La siguiente expresión busca el primer correo cuyo asunto (subject) empiece con la letra 'r':
val primerEmail = emails.first { it.subject.startsWith("r") }
Podríamos también buscar el último elemento que cumple con cierta condición usando last de manera muy similar.
¿Cómo crear una función personalizada que emplea high order functions?
Una aplicación avanzada se puede dar creando funciones que toman otras funciones como parámetros. Un ejemplo explicado en profundidad se llamó buscarEmail, la cual podría definirse así:
fun buscarEmail(emails: List<Email>, condicion: (Email) -> Boolean, encontrado: (Email) -> Unit, noEncontrado: () -> Unit) {
val emailEncontrado = emails.find(condicion)
if (emailEncontrado != null) encontrado(emailEncontrado) else noEncontrado()
}
Esta función permite buscar fácilmente un email con cierta condición y ejecutar acciones personalizadas dependiendo del resultado de la búsqueda.
Te animamos a practicar cada uno de estos ejemplos para ganar fluidez en el manejo de colecciones usando lambdas y high order functions. Si surgen dudas o tienes experiencias interesantes, ¡compártelas en comentarios!