Sobes.tech
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:

  • flatMap taikomas kolekcijos elementų transformavimui į kolekcijas ir vėliau rezultatą "išlyginti" (flatten) į vieną lygį. Pavyzdžiui, jei kiekvienas elementas yra paverčiamas į masyvą, flatMap sujungs visus šiuos masyvus į vieną.

  • compactMap transformuoja kolekcijos elementus, tuo pačiu metu išmetant visus nil (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.