Ejemplos de uso de run, let, apply, also y with en Kotlin: ¿cuándo usar cada uno?
¡Hola, colegas! He empezado a estudiar Kotlin y no logro entender las funciones de extensión run, let, apply, also y with. En la documentación dice que ayudan a escribir código más limpio, pero siempre me confundo sobre cuál elegir.
Por ejemplo, tengo una clase User simple:
```kotlin
data class User(var name: String, var age: Int, var email: String)
```
Y quiero crear una instancia, modificar sus campos y luego imprimirla en el log. He probado diferentes opciones:
```kotlin
// Opción 1
val user = User("", 0, "")
user.name = "Iván"
user.age = 25
user.email = "ivan@mail.ru"
println(user)
// Opción 2
val user = User("", 0, "").apply {
name = "Iván"
age = 25
email = "ivan@mail.ru"
}
println(user)
```
Parece que apply funciona, pero cuando necesito devolver el resultado de una transformación, me pierdo. Por ejemplo, si quiero obtener la longitud del nombre después de modificarlo:
```kotlin
val length = User("", 0, "").let {
it.name = "Iván"
it.name.length
}
```
O también...