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

  • flatMap se 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, flatMap spojí všechny tyto pole do jednoho.

  • compactMap transformuje prvky kolekce a současně odstraňuje všechny hodnoty nil (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.