- 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 with y also en Kotlin para operaciones múltiples
Clase 24 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 scope functions de Kotlin facilitan la escritura de código más claro y conciso al gestionar operaciones repetidas en objetos específicos. Entre estas funciones, destacan especialmente with y also, que permiten gestionar múltiples operaciones sobre un objeto o generar acciones complementarias de manera sencilla.
¿Qué es la función with y cuándo utilizarla?
La función with destaca por permitir ejecutar múltiples acciones sobre el mismo objeto, particularmente útil al realizar configuraciones u operaciones extensas. A diferencia de otras scope functions, with se invoca de manera independiente del objeto.
Ejemplo de uso:
val summary = with(emailCuatro) {
isRead = true
"Subject: $subject, Leído: $isRead"
}
println("El resumen del email cuatro es: $summary")
En este caso, with ejecuta operaciones directamente sobre emailCuatro y devuelve un resultado basado en la última operación realizada.
¿Cuándo resulta beneficioso usar with?
- Al aplicar múltiples configuraciones sobre el mismo objeto.
- Si se necesitan operaciones extensas que se deriven de dicho objeto.
¿Para qué sirve la función also?
Por otro lado, also se centra principalmente en generar acciones complementarias o efectos secundarios (side effects) que generalmente no afectan al objeto inicial. Es ideal cuando se necesita realizar una operación adicional, como registrar información o enviar una notificación.
Ejemplo con also para generar side effects:
val emailCinco = Email().also {
println("Enviando correo...")
}
En este ejemplo, al crear el objeto emailCinco, simultáneamente se ejecuta un efecto lateral, que es imprimir un mensaje en consola.
¿En qué situaciones es ideal utilizar also?
- Para registrar acciones o eventos precisos relacionados con la creación o manipulación del objeto.
- Cuando la operación es independiente del resultado del objeto principal.
¿Cómo combinar scope functions de forma eficiente?
Además, es posible y útil combinar diferentes scope functions, optimizando al máximo la limpieza y claridad del código. Un ejercicio práctico sugerido es comprobar la validez de un email combinando let, apply, also y run:
fun validateEmail(email: String?): Boolean {
return email?.let { emailString ->
emailString.apply { trim() }
.also { println(it) }
.run { contains("@") && contains(".") }
} ?: false
}
Este ejemplo registra adecuadamente el flujo de procesamiento al imprimir el correo limpiado y comprobar su validez.
¿Has probado estas funciones antes? ¿Qué ejemplos prácticos te resultaron útiles? ¡Nos encantaría leerte en los comentarios!