Sobes.tech
Junior — Middle

Puoi spiegare le differenze tra le operazioni flatMap e compactMap nei linguaggi di programmazione?

sobes.tech AI

Risposta dell'AI

Nei linguaggi di programmazione come Swift, flatMap e compactMap vengono utilizzati per trasformare le collezioni, ma hanno scopi diversi:

  • flatMap viene applicato per trasformare gli elementi di una collezione in collezioni e poi "appiattire" (flatten) il risultato a un solo livello. Ad esempio, se ogni elemento viene trasformato in un array, flatMap unirà tutti questi array in uno solo.

  • compactMap trasforma gli elementi della collezione, scartando contemporaneamente tutti i valori nil (o assenti). Questo è utile quando la trasformazione può restituire un valore opzionale, e si desidera ottenere un array solo con risultati non vuoti.

Esempio in Swift:

let numbers = ["1", "2", "three", "4"]

// compactMap converte le stringhe in Int, scartando quelle non numeriche
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap con array
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

In questo modo, compactMap filtra e trasforma, mentre flatMap combina le collezioni annidate dopo la trasformazione.