Sobes.tech
Junior — Middle

Kas saaksite selgitada erinevusi flatMap ja compactMap operatsioonide vahel programmeerimiskeeltes?

sobes.tech AI

Vastus AI-lt

Programmeerimiskeeltes nagu Swift, kasutatakse flatMap ja compactMap kogumite teisendamiseks, kuid nende eesmärgid on erinevad:

  • flatMap rakendub kogumi elementide teisendamiseks kogumiteks ja seejärel tulemuse "lame" (flatten) ühe tasandini. Näiteks, kui iga element teisendatakse massiiviks, ühendab flatMap kõik need massiivid üheks.

  • compactMap teisendab kogumi elemente, samal ajal kõrvaldades kõik nil (või puuduvad) väärtused. See on kasulik, kui teisendus võib tagastada valikulise väärtuse ja soovite saada ainult mitte-tühje tulemusi.

Näide Swiftis:

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

// compactMap teisendab stringid Int-ideks, kõrvaldades mitte-numerilised
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap massiividega
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Seega, compactMap filtreerib ja teisendab, samas kui flatMap ühendab sisemisi kogumeid pärast teisendamist.