К какому типу относится массив (Array) в Swift?

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

Ответ

Массив в Swift имеет тип Array<Element>, где Element — тип хранимых элементов. Это generic value type (универсальный тип-значение).

Основные характеристики:

  1. Value Semantics (Семантика значения): При присваивании или передаче массива создается его новая копия (при условии Copy-on-Write оптимизации).
    var array1 = [1, 2, 3]
    var array2 = array1 // На этом этапе может использоваться общий буфер
    array2.append(4)    // Теперь создается отдельная копия для array2
    print(array1) // [1, 2, 3]
    print(array2) // [1, 2, 3, 4]
  2. Универсальность (Generic): Может хранить элементы любого одного типа.
    let strings: Array<String> = ["A", "B"]
    let numbers = [1, 2, 3] // Тип выведен как Array<Int>
  3. Соответствие протоколам: Array соответствует протоколам Collection, Sequence, ExpressibleByArrayLiteral.

Отличие от NSArray: Swift Array — это тип-значение из стандартной библиотеки, а NSArray из Foundation — это неизменяемый ссылочный тип класса.