Junior — Middle
Ar galite paaiškinti skirtumus tarp operacijų flatMap ir compactMap programavimo kalbose?
sobes.tech AI
Atsakymas iš AI
Programavimo kalbose, tokiose kaip Swift, flatMap ir compactMap naudojami kolekcijų transformavimui, tačiau jų tikslai skiriasi:
-
flatMaptaikomas kolekcijos elementų transformavimui į kolekcijas ir vėliau rezultatą "išlyginti" (flatten) į vieną lygį. Pavyzdžiui, jei kiekvienas elementas yra paverčiamas į masyvą,flatMapsujungs visus šiuos masyvus į vieną. -
compactMaptransformuoja kolekcijos elementus, tuo pačiu metu išmetant visusnil(arba nebūtus) reikšmes. Tai naudinga, kai transformacija gali grąžinti pasirinktines reikšmes, ir norima gauti tik ne tuščius rezultatus.
Pavyzdys Swift kalba:
let numbers = ["1", "2", "three", "4"]
// compactMap paverčia eilutes į Int, atmestų ne skaitinius
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]
// flatMap su masyvais
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]
Taip compactMap filtruoją ir transformuoja, o flatMap sujungia įdėtus kolekcijas po transformacijos.