Sobes.tech
Junior — Middle

Можете ли објаснити разлике између операција flatMap и compactMap у програмским језицима?

sobes.tech АИ

Одговор од АИ

U programskim jezicima kao što je Swift, flatMap i compactMap koriste se za transformaciju kolekcija, ali imaju različite svrhe:

  • flatMap se primenjuje za transformaciju elemenata kolekcije u kolekcije i zatim "izravnava" (flatten) rezultat u jedan nivo. Na primer, ako je svaki element transformisan u niz, flatMap će spojiti sve te nizove u jedan.

  • compactMap transformiše elemente kolekcije, istovremeno odbacujući sve nil (ili nestajuće) vrednosti. Ovo je korisno kada transformacija može vratiti opcionalnu vrednost, i želimo da dobijemo niz samo sa nepraznim rezultatima.

Primer u Swift:

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

// compactMap pretvara stringove u Int, odbacujući one koji nisu numerički
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

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

Na ovaj način, compactMap filtrira i transformiše, dok flatMap kombinuje ugnježdene kolekcije nakon transformacije.