Sobes.tech
Junior — Middle

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:

  • flatMap se 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, flatMap va combina toate aceste array-uri într-unul singur.

  • compactMap transformă elementele colecției, eliminând în același timp toate valorile nil (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.