Categories: Funciones Estándar

Let

Share

Vamos a ver una tabla básica de los 5 modismos básicos de Kotlin para ver donde se encuentra let en ella:

Tabla de los modismos de Kotlin

Uno de los principales usos de let es hacer algo con el objeto en el caso de que éste no sea null. En otras palabras: ejecutar si no es nulo.

import kotlin.random.Random

fun main() {
//sampleStart
    repeat(10) { count ->
        val randomNull = when (Random.nextBoolean()) {
            false -> null
            true -> "not null"
        }
        randomNull?.let { println("$count $it") }
    }
//sampleEnd
}

En el código anterior puedes ver como repetimos una operación 10 veces, la cual consiste en generar un booleano aleatorio (true o false) y en función de lo que salga randomNull será nullo será un String.

Con let solo mostrará por pantalla cuando randomNull no sea nulo hasta terminar las repeticiones, si es nulo obviará la operación y no mostrará nada.

Puedes ver más información en Ejecutar si no es nulo.

También puedes utilizarlo de otras formas y no solo cuando es nulo. Como has visto en la tabla, let permite devolver un bloque por lo que puedes hacer algo con con un valor pero en realidad el valor que le asignarás a la variable será el que indiques dentro del let.

fun main() {
//sampleStart
    val name = "John".let {
        println(it) // 'John'
        // More uses of "John"...
        "Peter" // "name" value
    }
    println(name) // 'Peter'
//sampleEnd
}

Ten cuidado con el ejemplo anterior, porque si no hubiésemos puesto "Peter" la variable name no sería "John", ni siquiera sería un String sería un Unit. Para conseguir que fuese un String tendrías que utilizar also.

Con todos los modismos basados en funciones de extensión puedes hacer referencias a funciones:

fun main() {
//sampleStart
    val name = "John"
    name.let(::println)
//sampleEnd
}

Una cosa que te preguntarás cuando termines de ver todos los modismos es y cuando los estés usando es: ¿Pero aunque estemos usando let para hacer esta cosa, podríamos haberlo hecho también con este otro modismo (en ocasiones será also, run, etc)? La respuesta es que muchas veces puedes conseguir el mismo resultado con dos modismos diferentes, pero algunos favorecen la semántica a la hora de leer el código por lo que es preferibles usar esos a otros.

Por ejemplo si quieres hacer X y como efecto secundario Y (asignar variable y mostrar por pantalla), es preferible a que lo hagas con also a con let ya que si alguien lo lee lo comprenderá de un simple vistazo.

fun main() {
//sampleStart
    val name = "John".also { println(it) }
//sampleEnd
}

Enlaces de interés:

Recent Posts

  • Curso Interactivo

Variables

En esta lección aprenderás a declarar variables y los tipos básicos.

5 años ago
  • Curso Interactivo

Introducción al Curso Interactivo

La mejor forma de aprender algo en esta vida es a base de practicar. Espero…

5 años ago
  • Coroutines

Iniciar una Corrutina

La principal forma de iniciar una corrutina en Kotlin es con el coroutine builder launch…

5 años ago
  • Coroutines

Coroutines

Las coroutines en Kotlin vienen a tratar de solucionar todos los problemas y dificultades que…

5 años ago
  • Funciones Estándar

Resumen Elección de Modismo

Con este esquema te puedes guiar a la hora de elegir el modismo o función…

5 años ago
  • Funciones Estándar

With

El último que queda por ver es with qué en inglés significa "con". Por lo…

5 años ago