July 26, 2024

El método collect en Scala es una función de orden superior que se utiliza para filtrar y transformar elementos de una colección en base a ciertas condiciones. Esta función devuelve una nueva colección que contiene sólo aquellos elementos de la colección original que satisfacen la condición especificada.

La sintaxis básica de la función collect es la siguiente:

def collect[B](pf: PartialFunction[A, B]): Traversable[B]

Aquí, pf es una función parcial que toma elementos de tipo A de la colección original y devuelve elementos de tipo B para la nueva colección. La función collect aplica esta función parcial a cada elemento de la colección original y devuelve una nueva colección de tipo Traversable[B].

Veamos algunos ejemplos para entender mejor el funcionamiento de collect.

Ejemplo 1: Filtrando y transformando una lista de números

Supongamos que tenemos una lista de números y queremos filtrar sólo aquellos números que son pares y luego dividirlos por dos. Podemos hacer esto utilizando la función collect de la siguiente manera:

val numeros = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val nuevosNumeros = numeros.collect {
case x if x % 2 == 0 => x / 2
}
println(nuevosNumeros)

La salida de este programa será:

List(1, 2, 3, 4, 5)

Aquí, utilizamos la función collect para aplicar una función parcial que toma sólo aquellos números que son pares (case x if x % 2 == 0) y los divide por dos (x / 2). La función collect devuelve una nueva lista que contiene sólo los números transformados que satisfacen la condición especificada.

Ejemplo 2: Filtrando y transformando un mapa de cadenas y enteros

Supongamos que tenemos un mapa que contiene nombres de personas y sus edades, y queremos filtrar sólo aquellos nombres que comienzan con la letra “A” y luego duplicar sus edades. Podemos hacer esto utilizando la función collect de la siguiente manera:

val personas = Map("Alice" -> 25, "Bob" -> 30, "Charlie" -> 35, "Anna" -> 40)
val nuevasEdades = personas.collect {
  case (nombre, edad) if nombre.startsWith("A") => edad * 2
}
println(nuevasEdades)

La salida de este programa será:

List(50, 80)

Aquí, utilizamos la función collect para aplicar una función parcial que toma sólo aquellos pares clave-valor cuyas claves comienzan con la letra “A” (case (nombre, edad) if nombre.startsWith("A")) y duplica sus valores (edad * 2). La función collect devuelve una nueva lista que contiene sólo las edades transformadas que satisfacen la condición especificada.

En resumen, la función collect en Scala es una herramienta útil para filtrar y transformar elementos de una colección en base a ciertas condiciones. Con su uso, podemos crear nuevas colecciones que contengan sólo aquellos elementos que satisfagan nuestras necesidades específicas.

Leave a Reply

Your email address will not be published. Required fields are marked *