Swift предоставляет три основные функции высшего порядка для трансформации коллекций: map, flatMap и compactMap. Каждая служит определённой цели в зависимости от того, как тебе нужно обработать данные.
mapmap преобразует каждый элемент в коллекции, применяя замыкание, и возвращает новый массив того же размера.
let numbers = [1, 2, 3]
let doubled = numbers.map { $0 * 2 } // [2, 4, 6]
Используй его, когда тебе нужно прямое преобразование один-в-один без optional или вложенных значений.
flatMapflatMap преобразует и разворачивает вложенные последовательности в плоскую коллекцию.
let nested = [[1, 2], [3, 4]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4]
flatMap разворачивает значение перед применением преобразования, предотвращая двойное оборачиваниеcompactMapcompactMap преобразует элементы и удаляет nil-результаты, возвращая только валидные развёрнутые значения.
let strings = ["1", "two", "3"]
let integers = strings.compactMap { Int($0) } // [1, 3]
Используй его, когда твоё преобразование может вернуть nil и ты хочешь безопасно отбросить такие случаи.
map — преобразует, сохраняет все элементы, количество остаётся прежнимflatMap — преобразует и разворачивает вложенные коллекции; безопасно разворачивает optional значенияcompactMap — преобразует и фильтрует nil-значенияВыбирай map для чистых преобразований, compactMap — когда работаешь с замыканиями, возвращающими optional, и flatMap — когда работаешь с вложенными коллекциями или цепочками операций с optional.
Функция map всегда возвращает коллекцию с тем же количеством элементов, что и входная коллекция, независимо от того, производит ли трансформация значения nil.
Новый — ещё не проверен сообществом
Вы