Sobes.tech
Junior — Middle

¿Puedes explicar las diferencias entre las operaciones flatMap y compactMap en los lenguajes de programación?

sobes.tech AI

Respuesta de la IA

En lenguajes de programación como Swift, flatMap y compactMap se utilizan para transformar colecciones, pero tienen diferentes propósitos:

  • flatMap se aplica para transformar los elementos de una colección en colecciones y luego "aplanar" (flatten) el resultado en un solo nivel. Por ejemplo, si cada elemento se transforma en un array, flatMap combinará todos estos arrays en uno solo.

  • compactMap transforma los elementos de la colección, descartando simultáneamente todos los valores nil (o ausentes). Esto es útil cuando la transformación puede devolver un valor opcional, y se desea obtener solo un array con resultados no vacíos.

Ejemplo en Swift:

let numbers = ["1", "2", "three", "4"]

// compactMap convierte cadenas en Int, descartando las no numéricas
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap con arrays
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

De esta manera, compactMap filtra y transforma, mientras que flatMap combina colecciones anidadas después de la transformación.