Sobes.tech
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:

  • map trasforma ogni elemento della collezione in un altro elemento, restituendo una collezione con lo stesso numero di elementi.

  • flatMap applica 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]