Avatar ·

Cuándo usar run, let, apply, also y with en Kotlin? Ejemplos y explicación

¡Hola a todos! Acabo de empezar a aprender Kotlin después de Java, y las funciones de ámbito (scope functions): run, let, apply, also y with me tienen muy confundido. Leí la documentación, pero aún así no entiendo cuándo usar cada una. Por ejemplo, a menudo veo este código: ```kotlin val numbers = mutableListOf("one", "two", "three") numbers.let { println(it) } numbers.apply { add("four") } numbers.run { println("Size: $size") } ``` Pero, ¿por qué no puedo simplemente escribir `println(numbers)` o `numbers.add("four")`? ¿Cuál es la diferencia entre `let` y `apply`? ¿Y para qué sirve `also`? También intenté inicializar un objeto con configuración: ```kotlin val person = Person().apply { name = "John" age = 30 } ``` Esto funciona, pero lo mismo se puede hacer con `with`: ```kotlin val person = with(Person()) { name = "John" age = 30 this } ``` ¿Cuál es la diferencia? ¿Y cuándo usar `run` en lugar de `apply`? Agradecería reglas claras y ejemplos para cada función.