Ответ
map — это функция высшего порядка, которая преобразует каждый элемент коллекции, применяя к нему предоставленное замыкание, и возвращает новый массив с результатами преобразования. Исходная коллекция не изменяется.
Синтаксис и пример:
let numbers = [1, 2, 3, 4]
// 1. Преобразование Int -> Int
let squared = numbers.map { $0 * $0 } // [1, 4, 9, 16]
// 2. Преобразование Int -> String
let strings = numbers.map { "Number: ($0)" } // ["Number: 1", "Number: 2", ...]
// 3. Явное замыкание
let doubled = numbers.map { element in
return element * 2
} // [2, 4, 6, 8]
Ключевые характеристики map:
- Возвращает массив (
Array) того же размера, что и исходная коллекция. - Может менять тип элементов (например,
Int→String). - Применяется к любым типам, соответствующим протоколу
Sequence(Array,Set,Dictionary.keys, и т.д.). - Выполняется «жадно» (eagerly) для стандартных коллекций, создавая новый массив сразу. Для ленивых вычислений используется
collection.lazy.map.