Что делает метод map для коллекций в Swift?

«Что делает метод map для коллекций в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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) того же размера, что и исходная коллекция.
  • Может менять тип элементов (например, IntString).
  • Применяется к любым типам, соответствующим протоколу Sequence (Array, Set, Dictionary.keys, и т.д.).
  • Выполняется «жадно» (eagerly) для стандартных коллекций, создавая новый массив сразу. Для ленивых вычислений используется collection.lazy.map.