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:
-
flatMaprakendub kogumi elementide teisendamiseks kogumiteks ja seejärel tulemuse "lame" (flatten) ühe tasandini. Näiteks, kui iga element teisendatakse massiiviks, ühendabflatMapkõik need massiivid üheks. -
compactMapteisendab kogumi elemente, samal ajal kõrvaldades kõiknil(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.