let en Kotlin: para qué sirve, cómo se usa y trucos

let es una de las funciones de Kotlin que bien usada te puede ayudar a escribir código limpio y ordenado. Se trata de una scope function que te permite crear una función lambda donde le entra como parámetro el valor del que llamas let. En este vídeo te enseño algunos usos prácticos que puede tener cuando programas Kotlin.

Cuando trabajamos con Kotlin, una función que aparece constantemente es let. Esta función está disponible para cualquier tipo de dato, ya que está acoplada al tipo base en Kotlin. Esto significa que cualquier variable, sea del tipo que sea, puede invocar let. Por ejemplo, si tenemos una variable p, podemos hacer p.let, o incluso acceder a propiedades como p.nombre.let o p.nombre.length.let. Esta característica hace que let sea muy versátil y útil en múltiples contextos.

El propósito principal de let es permitirnos ejecutar un bloque de código sobre una variable sin necesidad de declarar variables temporales. Para ello, let recibe como parámetro una función anónima o lambda, y dentro de esta función podemos operar con el valor sobre el que se invoca let. Este valor se pasa como argumento a la lambda, y por defecto se accede a él con el identificador it, aunque podemos cambiar ese nombre si queremos.

Por ejemplo, si tenemos una cadena y queremos trabajar con su versión en mayúsculas, podemos hacer algo así:

val resultado = "hola".uppercase().let {
    println(it)
    it.length
}
println("Longitud: $resultado")

En este fragmento, la cadena "hola" se convierte a mayúsculas, luego se pasa a let, donde imprimimos el valor y devolvemos su longitud. El valor devuelto por let es el resultado de la última expresión dentro de la lambda, por lo que resultado tendrá el valor 4.

Esta capacidad de devolver un valor hace que let sea muy útil para transformar datos sin necesidad de crear variables intermedias. Podemos encadenar operaciones complejas en una sola expresión, manteniendo el código limpio y legible.

Otro uso muy práctico de let es junto con el operador de navegación segura ?.. Este operador nos permite acceder a propiedades o métodos de una variable que puede ser nula, evitando así errores de tipo null pointer exception. Cuando combinamos ?. con let, podemos ejecutar un bloque de código solo si la variable no es nula.

Por ejemplo, si tenemos una variable empleo que puede ser nula, podemos hacer lo siguiente:

p.empleo?.let { empleoNoNulo ->
    println("${p.nombre} trabaja como $empleoNoNulo")
}

En este caso, el bloque dentro de let solo se ejecutará si empleo tiene un valor distinto de null. Si empleo es nulo, el bloque se omite y no se produce ningún error. Esto nos permite manejar valores opcionales de forma segura y elegante, evitando la necesidad de escribir condicionales explícitos para comprobar si la variable es nula.

Además, al usar let con el operador de navegación segura, el valor no nulo se pasa directamente a la lambda, lo que facilita trabajar con él sin tener que hacer castings o comprobaciones adicionales.

En resumen, let nos ayuda a crear bloques de código cortos y específicos para operar sobre valores, simplificando la gestión de variables temporales y facilitando la transformación de datos. Su integración con el operador de navegación segura lo convierte en una herramienta esencial para escribir código Kotlin seguro y limpio, especialmente cuando trabajamos con valores que pueden ser nulos.

Lista de reproducción
  1. 1
    let en Kotlin: para qué sirve, cómo se usa y trucos
    10 minutos
  2. 2
    lateinit, lazy, var, val... ¿cuál debo usar?
    10 minutos