Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot atšķirības starp operācijām flatMap un compactMap programmēšanas valodās?

sobes.tech AI

Atbilde no AI

Programmēšanas valodās, piemēram, Swift, flatMap un compactMap tiek izmantoti kolekciju pārveidošanai, bet tiem ir dažādi mērķi:

  • flatMap tiek piemērots, lai pārveidotu kolekcijas elementus par kolekcijām un pēc tam "izlīdzinātu" (flatten) rezultātu vienā līmenī. Piemēram, ja katrs elements tiek pārveidots par masīvu, flatMap apvienos šos masīvus vienā.

  • compactMap pārveido kolekcijas elementus, vienlaikus izslēdzot visus nil (vai trūkstošos) vērtības. Tas ir noderīgi, ja pārveidošana var atgriezt opcionalo vērtību, un vēlamies iegūt tikai ne tukšus rezultātus.

Piemērs Swift:

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

// compactMap pārveido virknes par Int, izslēdzot ne skaitliskās
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap ar masīviem
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Tādējādi, compactMap filtrē un pārveido, bet flatMap apvieno iekšējos kolekcijas pēc pārveidošanas.