Usuario anónimo
UserCódigo de la clase
fun main(args: Array<String>){ val moviles = mutableListOf("Samsung A50","Samsung A51","Samsung A52") .run{ removeIf{ movil->movil.contains("A50") } this } println(moviles) }
Cristian David Restrepo Marin
👍
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:
¿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?
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.
Usuario anónimo
UserCódigo de la clase
fun main(args: Array<String>){ val moviles = mutableListOf("Samsung A50","Samsung A51","Samsung A52") .run{ removeIf{ movil->movil.contains("A50") } this } println(moviles) }
Cristian David Restrepo Marin
👍
Silvana Rolón
Cristian David Restrepo Marin
👍
Freddy Humberto Mendoza Muñoz
<fun main(args: Array<String>) { val moviles = mutableListOf("Google Pixel 2XL", "Google Pixel 4a", "Huawei Redmi 9", "Xiaomi mi a3") .run{ removeIf{movil -> movil.contains("Google")} this } println(moviles) }>
Cristian David Restrepo Marin
👍
Función run 🏃
En Kotlin, la función run es una función de orden superior que se utiliza para realizar operaciones en un objeto y devolver un resultado. Proporciona un contexto en el que puedes acceder a las propiedades y métodos del objeto de manera concisa.
La sintaxis básica de run es la siguiente:
objeto.run { // Realizar operaciones con el objeto // ... // Devolver un resultado opcionalmente }
objeto es el objeto en el que deseas realizar las operaciones. Puede ser una variable o una expresión.
Dentro del bloque de código de run, puedes acceder a los miembros del objeto directamente, sin la necesidad de llamar al objeto en cada ocasión. Puedes utilizar los métodos y propiedades del objeto como si estuvieras dentro del ámbito de ese objeto.
Puedes realizar cualquier operación necesaria dentro del bloque de código de run. Puedes llamar a métodos, acceder a propiedades, realizar cálculos, etc.
Opcionalmente, puedes devolver un resultado al final del bloque de código utilizando la última expresión. Este resultado se asigna a la variable o se utiliza directamente en el contexto en el que se llama a run.
El valor de retorno de run es el resultado de la última expresión en el bloque de código, o bien Unit si no hay ninguna expresión. . Aquí tienes un ejemplo práctico para ilustrar cómo se utiliza run:
data class Persona(val nombre: String, var edad: Int) val persona = Persona("Juan", 25) val resultado = persona.run { println("Nombre: $nombre") println("Edad: $edad") edad += 1 "¡Hola, $nombre! Tienes $edad años." } println(resultado)
En este ejemplo, utilizamos run para acceder a los miembros de persona (nombre y edad) dentro del bloque de código. Podemos imprimir el nombre y la edad, realizar operaciones como incrementar la edad y luego devolver un saludo personalizado con el nombre y la nueva edad. Finalmente, imprimimos el resultado en la última línea. . En resumen, run es una función útil en Kotlin que permite trabajar con un objeto en un contexto específico, accediendo a sus miembros de manera más concisa y devolviendo un resultado opcionalmente. Puede mejorar la legibilidad y la claridad del código al reducir la necesidad de repetir llamadas al objeto y simplificar las operaciones en él.
Cristian David Restrepo Marin
fun main(args: Array<String>){ val moviles = mutableListOf("Samsung A50","Samsung A51","Samsung A52") .run{ removeIf{ movil->movil.contains("A50") } this } println(moviles) }
Nieves Jiménez Mía
¿que tiene de diferente con with? ¿Cuando usar uno y cuando el otro?
Camilo Esteban Abarca Zuñiga
Hola, hasta donde yo entendí Run las usas cuando tienes una lista la cual quieres realizarle distintas acciones (modificar, borrar, otras) With se usa para no repetir la variable ya que si quieres algún dato especifico tiene que poner nombreVariable.parametro1 - nombreVariable.parametro3 - nombreVariable.parametro3 (en el ejemplo usan this y size) , entonces con el whit no repites nombreVariable
William Schnaider Torres Bermon
To summarize, the with function is used when you need to perform a series of operations on an object without referencing the object multiple times, the run function is used when you want to execute a series of operations on an object and return a result based on those operations, and the let function is used when you want to execute a series of operations on an object and return a specific value based on those operations.
Fabrizio Dominguez
Hola, alguien sabe como hacer que una app arranque sola al encender un dispositivo?
Usuario anónimo
Userfun main(args: Array<String>) { val mobileDevice = mutableListOf("Google Pixel 2XL", "Asus", "Motorola", "Samsung", "Google Pixel 4A", "Kyocera", "iPhone", "Xiaomi")
.run {
removeIf {movil -> movil.contains("Google")}
this
}
println(mobileDevice)
}