Sobes.tech
Junior — Middle

Quais são as diferenças entre os métodos map, flatMap e filterMap ao processar coleções?

sobes.tech IA

Resposta da IA

Os métodos map, flatMap e filterMap são usados para processar coleções, mas têm objetivos diferentes:

  • map transforma cada elemento da coleção em outro elemento, retornando uma coleção com o mesmo número de elementos.

  • flatMap aplica primeiro uma função que retorna uma coleção para cada elemento, e depois "achata" o resultado numa única coleção plana. Isto é útil quando se quer obter vários elementos a partir de um.

  • filterMap (em algumas linguagens ou bibliotecas, por exemplo, Swift) combina filtragem e transformação: a função devolve um valor opcional, e apenas os resultados não vazios entram na coleção final.

Exemplo em Swift:

let numbers = [1, 2, 3, 4]

// map: multiplicamos cada elemento por 2
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]

// flatMap: para cada número, devolvemos um array com o elemento e o seu quadrado
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]

// filterMap (compactMap em Swift): converte strings em Int, descartando nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]