Poți explica diferențele dintre operațiile flatMap și compactMap în limbajele de programare?
sobes.tech AI
Răspuns de la AI
În limbajele de programare precum Swift, flatMap și compactMap sunt utilizate pentru a transforma colecțiile, dar au scopuri diferite:
-
flatMapse aplică pentru a transforma elementele colecției în colecții și apoi a "aplatiza" (flatten) rezultatul într-un singur nivel. De exemplu, dacă fiecare element este transformat într-un array,flatMapva combina toate aceste array-uri într-unul singur. -
compactMaptransformă elementele colecției, eliminând în același timp toate valorilenil(sau lipsă). Acest lucru este util atunci când transformarea poate returna o valoare opțională și doriți să obțineți un array doar cu rezultate non-goale.
Exemplu în Swift:
let numbers = ["1", "2", "three", "4"]
// compactMap convertește șirurile în Int, eliminând cele non-numerice
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]
// flatMap cu array-uri
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]
Astfel, compactMap filtrează și transformă, în timp ce flatMap combină colecțiile imbricate după transformare.