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:
-
maptransforma cada elemento da coleção em outro elemento, retornando uma coleção com o mesmo número de elementos. -
flatMapaplica 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]