Sobes.tech
Junior — Middle

Kokiu būdu skirtingi metodai map, flatMap ir filterMap veikia kolekcijų apdorojimo metu?

sobes.tech AI

Atsakymas iš AI

Metodai map, flatMap ir filterMap naudojami kolekcijų apdorojimui, tačiau jų tikslai skiriasi:

  • map paverčia kiekvieną kolekcijos elementą į kitą elementą ir grąžina kolekciją su tokiu pačiu elementų skaičiumi.

  • flatMap pirmiausia taiko funkciją, kuri kiekvienam elementui grąžina kolekciją, ir tada "išlygina" rezultatą į vieną plokščią kolekciją. Tai naudinga, kai iš vieno elemento norite gauti kelis.

  • filterMap (kai kuriose kalbose ar bibliotekose, pvz., Swift) sujungia filtravimą ir transformaciją: funkcija grąžina pasirinktinę reikšmę, ir į galutinę kolekciją įtraukiami tik netušti rezultatai.

Pavyzdys Swift kalba:

let numbers = [1, 2, 3, 4]

// map: dauginame kiekvieną elementą iš 2
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]

// flatMap: kiekvienam skaičiui grąžiname masyvą su elementu ir jo kvadratu
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]

// filterMap (Swift: compactMap): konvertuoja stringus į Int, praleidžia nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]