La Función any En Kotlin

ANUNCIO
Loading...

En este tutorial verás el uso de la función any en Kotlin para determinar si al menos un elemento en una colección coincide con el predicado que especifiques.

Función any()

La función any hace parte del grupo de funciones que reciben un predicado para determinar si los elementos cumplen condiciones.

Su propósito es retornar un resultado booleano que expresa: «Al menos uno de los elementos de la colección ha satisfecho el predicado». Tendrás true en caso positivo, de lo contrario false.

// Arreglos inline fun <T> Array<out T>.any( predicate: (T) -> Boolean ): Boolean // Iterables inline fun <T> Iterable<T>.any( predicate: (T) -> Boolean ): Boolean // Mapas inline fun <K, V> Map<out K, V>.any( predicate: (Entry<K, V>) -> Boolean ): Boolean
Lenguaje del código: Kotlin (kotlin)

Como viste con filter, el predicado es un tipo función con un parámetro con el tipo de elementos de la colección y el cuerpo es la expresión booleana aplicada. Esto te permite pasar literales de función como lambdas y funciones anónimas.

Aplicar any En Listas

Tomemos como ilustración una lista de enteros para explicar el uso de predicados de la función any en Kotlin:

fun main() { val numbersList = listOf(-3, 4, 0, 5, 3) // ¿Hay números negativos? println(numbersList.any { it < 0 }) // true // ¿Hay números impares? println(numbersList.any { it % 2 != 0 }) // true // ¿Hay mayores a 10? println(numbersList.any { it > 10 }) // false // ¿Hay elementos? println(emptyList<Int>().any()) // false }
Lenguaje del código: Kotlin (kotlin)

El ejemplo anterior muestra el uso de cuatro predicados. Los tres primeros permiten determinar si en numbersList existen negativos, números impares y números mayores a 10.

La comprobación final, al crear una lista vacía con emptyList(), invoca a la función any() sin predicado. Esta comprueba si existe al menos un elemento en la colección, por lo que tendrás false como resultado.

Aplicar any En Mapas

Veamos otro ejemplo donde tenemos un mapa con varios ítems de un inventario. Necesitamos determinar si hay elementos que están agotándose (unidades menores a 10) y si el nombre contiene el String "ch":

fun main() { val items = mapOf( "Pastel" to 1, "Pan tajado" to 100, "Leche" to 9, "Salchicas" to 15 ) println(items.any { val isItOutOfStock = it.value < 10 val containsCH = "ch" in it.key isItOutOfStock && containsCH }) // true }
Lenguaje del código: Kotlin (kotlin)

El predicado está construido por dos proposiciones que podemos separar en variables dentro del lambda pasado en any{ }. Si la entrada tiene menos de 10 unidades (isItOutOfStock) y su clave contiene a «ch» (containsCH) entonces tendrás true como resultado.

La función devolverá resultado positivo ya que el par Leche=9 cumple satisface el predicado completamente. Recuerda que tu lambda usa como parámetro un tipo Entry<K, V> por lo que puedes acceder a key y value regularmente.

¿Ha sido útil esta publicación?

ANUNCIO
Loading...