Какие коллекции, кроме Array, Set и Dictionary, есть в Swift?

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

Ответ

Помимо основных коллекций, Swift предоставляет несколько специализированных типов для работы с диапазонами и низкоуровневыми буферами:

  1. Типы диапазонов (Ranges):

    • Range<Bound> (полуоткрытый): a..<b
    • ClosedRange<Bound> (закрытый): a...b
    • PartialRangeFrom<Bound>: a...
    • PartialRangeThrough<Bound>: ...b
    • PartialRangeUpTo<Bound>: ..<b
    let openRange = 1..<5 // 1, 2, 3, 4
    let closedRange = 1...5 // 1, 2, 3, 4, 5
    let fromFive = 5... // Все числа >= 5
  2. Небезопасные буферы (для низкоуровневой работы):

    • UnsafeBufferPointer<Element> — неизменяемый буфер.
    • UnsafeMutableBufferPointer<Element> — изменяемый буфер. Позволяют напрямую работать с областью памяти, например, с сырыми байтами UnsafeRawBufferPointer.
  3. Коллекции из Foundation (мост с Objective-C):

    • NSArray, NSDictionary, NSSet — используются при взаимодействии с Objective-C API.
  4. Дополнительные пакеты: Для более сложных структур используйте сторонние пакеты:

    • Swift Collections: Deque, OrderedSet, OrderedDictionary.
    • Swift Algorithms: Chain, Product, Unique и итераторы для комбинаторики.