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:
-
flatMaptiek 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,flatMapapvienos šos masīvus vienā. -
compactMappārveido kolekcijas elementus, vienlaikus izslēdzot visusnil(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.