Как устроены массивы (Array) в Swift?

«Как устроены массивы (Array) в Swift?» — вопрос из категории Swift Core, который задают на 22% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Массив (Array<Element>) в Swift — это упорядоченная коллекция элементов одного типа с нулевой индексацией. Это value type, реализующий copy-on-write для эффективности.

Ключевые характеристики:

  • Типизация: строгая, с поддержкой generics ([Int], [String])
  • Изменяемость: определяется объявлением (var — изменяемый, let — неизменяемый)
  • Динамический размер: автоматически увеличивается при добавлении элементов
  • Производительность: доступ по индексу — O(1), вставка в конец — амортизированная O(1)

Примеры:

// Создание и модификация
var numbers = [1, 2, 3]
numbers.append(4) // [1, 2, 3, 4]
numbers[0] = 10   // [10, 2, 3, 4]

// Неизменяемый массив
let colors = ["red", "green", "blue"]
// colors.append("yellow") // Ошибка компиляции

// Инициализация
var empty: [String] = []
var initialized = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0]

Оптимизация copy-on-write:

var a = [1, 2, 3]
var b = a          // Нет реального копирования, разделяют память
b.append(4)        // Только здесь создается копия для b
print(a)           // [1, 2, 3]
print(b)           // [1, 2, 3, 4]