Uso de la Función Run para Operaciones en Listas en Kotlin

Clase 33 de 38Curso de Kotlin desde Cero

Contenido del curso

Hola mundo Kotlin

Resumen

Cuando trabajas con listas u objetos obtenidos de un servidor o una librería, muchas veces necesitas transformarlos antes de utilizarlos. La función run en Kotlin es una scope function diseñada exactamente para eso: ejecutar un bloque de operaciones sobre una variable y devolver el resultado listo para usar.

¿Qué es la función run y cómo se utiliza?

La función run permite ejecutar una serie de operaciones inmediatamente después de declarar o recibir una variable. Dentro del bloque de run, tienes acceso directo al objeto mediante this, lo que facilita encadenar transformaciones sin crear variables intermedias.

Este patrón resulta especialmente útil cuando:

  • Recibes datos de una llamada a un servidor.
  • Obtienes resultados de una librería externa.
  • Necesitas filtrar, modificar o preparar una colección antes de pasarla a otra función.

¿Cómo filtrar elementos de una lista con run?

Para ilustrar su funcionamiento, se parte de una lista mutable de móviles [0:24]:

kotlin val moviles = mutableListOf( "Google Pixel 2 XL", "Google Pixel 4a", "Huawei Red 9", "Xiaomi Mi A3" )

A continuación se aplica la función run para eliminar todos los móviles que contengan la palabra Google [0:47]:

kotlin val resultado = moviles.run { removeIf { movil -> movil.contains("Google") } this } println(resultado)

El resultado impreso será una lista que solo contiene Huawei Red 9 y Xiaomi Mi A3.

¿Qué hace removeIf y contains en este contexto?

  • removeIf: recorre la colección y elimina cada elemento que cumpla la condición indicada. Opera directamente sobre la lista mutable, por lo que no necesitas reasignarla.
  • contains: devuelve true o false dependiendo de si el string evaluado incluye el texto proporcionado. Funciona como la condición que alimenta a removeIf.

Al combinar ambas funciones dentro de run, logras un bloque limpio donde filtras los datos y luego devuelves la lista modificada con this [1:09].

¿Cuándo conviene usar run frente a otras scope functions?

A diferencia de let, que recibe el objeto como parámetro it, run lo expone como this. Esto lo hace más cómodo cuando necesitas llamar varios métodos del objeto sin repetir su nombre. Comparado con with, la ventaja de run es que se encadena directamente al objeto, lo que mejora la legibilidad en cadenas de transformaciones.

Un escenario práctico: imagina que obtienes una lista de productos desde una API. Antes de mostrarla en pantalla, necesitas eliminar los descontinuados y ordenar por precio. Con run puedes agrupar esas operaciones en un solo bloque y obtener el resultado final listo para tu interfaz.

¿Qué valor devuelve la función run?

El bloque de run devuelve la última expresión evaluada. En el ejemplo se retorna this, es decir, la propia lista ya modificada. Sin embargo, podrías devolver cualquier otro valor, como el tamaño de la lista o un mensaje formateado. Esta flexibilidad la convierte en una herramienta versátil dentro del ecosistema de scope functions de Kotlin.

Si ya dominas with y let, incorporar run a tu repertorio te permitirá escribir código más expresivo y organizado. ¿Has encontrado algún caso donde prefieras run sobre las demás scope functions? Comparte tu experiencia en los comentarios.