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

  • flatMap stosuje 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ę, flatMap połączy wszystkie te tablice w jedną.

  • compactMap przekształca elementy kolekcji, jednocześnie odrzucając wszystkie wartości nil (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.