Pode explicar as diferenças entre as operações flatMap e compactMap nas linguagens de programação?
sobes.tech IA
Resposta da IA
Em linguagens de programação como Swift, flatMap e compactMap são usados para transformar coleções, mas têm objetivos diferentes:
-
flatMapaplica-se para transformar elementos de uma coleção em coleções e depois "achata" (flatten) o resultado num único nível. Por exemplo, se cada elemento for transformado numa matriz,flatMapirá combinar todas essas matrizes numa só. -
compactMaptransforma os elementos da coleção, descartando simultaneamente todos os valoresnil(ou ausentes). Isto é útil quando a transformação pode devolver um valor opcional, e deseja-se obter uma matriz apenas com resultados não vazios.
Exemplo em Swift:
let numbers = ["1", "2", "three", "4"]
// compactMap converte strings em Int, descartando as não numéricas
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]
// flatMap com arrays
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]
Assim, compactMap filtra e transforma, enquanto que flatMap combina coleções aninhadas após a transformação.