Junior — Middle
Czy możesz wyjaśnić różnice między operacjami flatMap i compactMap w językach programowania?
sobes.tech AI
Odpowiedź od AI
W językach programowania takich jak Swift, flatMap i compactMap służą do przekształcania kolekcji, ale mają różne cele:
-
flatMapstosuje się do przekształcania elementów kolekcji w kolekcje, a następnie "spłaszczania" (flatten) wyniku do jednego poziomu. Na przykład, jeśli każdy element jest przekształcany w tablicę,flatMappołączy wszystkie te tablice w jedną. -
compactMapprzekształca elementy kolekcji, jednocześnie odrzucając wszystkie wartościnil(lub brakujące). Jest to przydatne, gdy przekształcenie może zwrócić wartość opcjonalną, a chcemy uzyskać tablicę tylko z niepustymi wynikami.
Przykład w Swift:
let numbers = ["1", "2", "three", "4"]
// compactMap konwertuje łańcuchy na Int, odrzucając nie-numeryczne
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]
// flatMap z tablicami
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]
W ten sposób, compactMap filtruje i przekształca, a flatMap łączy zagnieżdżone kolekcje po przekształceniu.