Junior — Middle
Můžete vysvětlit rozdíly mezi operacemi flatMap a compactMap v programovacích jazycích?
sobes.tech AI
Odpověď od AI
V programovacích jazycích jako Swift se flatMap a compactMap používají k transformaci kolekcí, ale mají různé účely:
-
flatMapse používá k transformaci prvků kolekce na kolekce a poté "zploštění" (flatten) výsledku do jedné úrovně. Například, pokud je každý prvek převeden na pole,flatMapspojí všechny tyto pole do jednoho. -
compactMaptransformuje prvky kolekce a současně odstraňuje všechny hodnotynil(nebo chybějící). To je užitečné, když transformace může vrátit volitelnou hodnotu a chcete získat pole pouze s nenulovými výsledky.
Příklad v Swift:
let numbers = ["1", "2", "three", "4"]
// compactMap převádí řetězce na Int, ignoruje nečíselné
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]
// flatMap s poli
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]
Tímto způsobem compactMap filtruje a transformuje, zatímco flatMap spojuje vnořené kolekce po transformaci.