Sobes.tech
Junior — Middle

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:

  • flatMap aplica-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, flatMap irá combinar todas essas matrizes numa só.

  • compactMap transforma os elementos da coleção, descartando simultaneamente todos os valores nil (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.