Junior — Middle
Quali sono le differenze tra i metodi map, flatMap e filterMap nell'elaborazione delle collezioni?
sobes.tech AI
Risposta dell'AI
I metodi map, flatMap e filterMap vengono utilizzati per elaborare le collezioni, ma hanno scopi diversi:
-
maptrasforma ogni elemento della collezione in un altro elemento, restituendo una collezione con lo stesso numero di elementi. -
flatMapapplica prima una funzione che restituisce una collezione per ogni elemento, e poi "appiattisce" il risultato in una singola collezione piatta. È utile quando si vogliono ottenere più elementi da uno solo. -
filterMap(in alcuni linguaggi o librerie, ad esempio Swift) combina filtraggio e trasformazione: la funzione restituisce un valore opzionale, e solo i risultati non vuoti vengono inclusi nella collezione finale.
Esempio in Swift:
let numbers = [1, 2, 3, 4]
// map: moltiplichiamo ogni elemento per 2
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]
// flatMap: per ogni numero, restituiamo un array con l'elemento e il suo quadrato
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]
// filterMap (compactMap in Swift): convertiamo stringhe in Int, ignorando nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]