¿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:
-
flatMapse 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,flatMapcombinará todos estos arrays en uno solo. -
compactMaptransforma los elementos de la colección, descartando simultáneamente todos los valoresnil(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.