Sobes.tech
Back to questions
Junior — Middle
70

Объясните различия между методами map и flatMap в работе с коллекциями или потоками данных.

Companies where asked
МосбиржаМосбиржа

Answer from AI

sobes.tech AI

Метод map применяется к коллекции или потоку и преобразует каждый элемент, возвращая новую коллекцию с элементами, соответствующими результатам преобразования. При этом каждый входной элемент преобразуется в ровно один выходной элемент.

Метод flatMap сначала применяет функцию, которая возвращает коллекцию (или поток) для каждого элемента, а затем "сплющивает" (flatten) все эти вложенные коллекции в одну плоскую коллекцию. Это удобно, когда функция преобразования возвращает несколько элементов для каждого входного.

Пример на Swift:

let numbers = [1, 2, 3]

// map: каждый элемент умножаем на 2
let mapped = numbers.map { [$0, $0 * 2] }
// mapped: [[1, 2], [2, 4], [3, 6]]

// flatMap: преобразуем и сплющиваем
let flatMapped = numbers.flatMap { [$0, $0 * 2] }
// flatMapped: [1, 2, 2, 4, 3, 6]

Таким образом, flatMap полезен, когда функция возвращает коллекцию, и нужно получить одну объединённую коллекцию без вложенности.