Skip to content

Latest commit

 

History

History
103 lines (60 loc) · 6.96 KB

File metadata and controls

103 lines (60 loc) · 6.96 KB

Коллекции (набор значений)

  1. ✔️ Protocol extensions
  2. ✔️ When are protocol extensions useful in Swift?

Apple: A collection is a stable sequence with addressable "positions," represented by an associated Index type.

protocol CollectionType : SequenceType {
  typealias Index : ForwardIndexType             // a position
  subscript(i: Index) -> Iterator.Element {get}

  var startIndex: Index {get}
  var endIndex: Index {get}
}

Всего в swift есть коллекции:

  • Array (массив) - сохраняют свой порядок и могут содержать дубликаты. Массивы в свифте реализованы как структура;

    1. Вся правда о массивах
    Open

    • Вы можете свободно добавлять к ним данные (если не let), чтобы со временем наращивать свои данные, или вы можете удалить или даже изменить порядок элементов, если хотите.

    • Мы считываем значения из массивов, используя их числовую позицию, отсчитывая от 0. Этот «отсчет от 0» имеет технический термин: zero-based array[0]

    Для сравнения, массивы должны хранить свои элементы в том порядке, в котором вы им указываете, поэтому, чтобы проверить, существует ли элемент X в массиве, содержащем 10 000 элементов, Swift необходимо начать с первого элемента и проверять каждый элемент, пока он не будет найден

    var website = ["Apple", "www.apple.com"]

    Получить значения: website[0] и website[1]


  • Set (множество) - неупорядочены и не могут содержать дубликатов. Все объекты внутри Set должны конфортить протокол Hashable. Set в Swift реализованы как структуры;

    Open

    Наборы представляют собой наборы значений, как и массивы, за исключением двух отличий:

    • Предметы хранятся не в каком-либо порядке; они хранятся в случайном порядке, поэтому мы не можем считывать значения из набора с использованием числовых позиций, как с массивами.

    • Ни один предмет не может появляться в наборе дважды; все предметы должны быть уникальными.

    let colors = Set(["red", "green", "blue"])

    Поскольку set не должен хранить ваши объекты в том порядке, в котором вы их добавляете, они вместо этого могут хранить их в случайном порядке, который оптимизирует их для быстрого поиска. Итак, когда вы говорите «содержит ли этот набор элемент X», вы получите ответ за доли секунды, независимо от того, насколько велик набор.


  • Dictionaries (словари) (Hash Map) - неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Dictionary в Swift реализованы как структуры;

    Open

    Словари - это коллекции значений, как и массивы, но вместо того, чтобы хранить вещи с целочисленной позицией, вы можете получить к ним доступ, используя все, что захотите.

    let heights = ["Taylor Swift": 1.78, "Ed Sheeran": 1.73] или идентификатора(ключ) : значение, которое мы хотим сохранить

    Получить значения: let result: Int = heights["Taylor Swift", default: 0]; default - значит, что есть значения "Taylor Swift" нет в словаре, то верни 0.

    В отличие от кортежей, нельзя гарантировать, что ключ в словаре существует. Вот почему чтение значения из словаря может ничего не вернуть - возможно, вы запросили ключ, которого не существует!


  • String снова являются являются коллекциями. Это означает, что вы можете переворачивать их, циклически перебирать их посимвольно, использовать map() и flatMap() и многое другое.

Новые невстроенные коллекции swift:

  • OrderedSet - тот же уникальный Set, только значения в нем упорядочены;

  • OrderedDictionary - упорядоченный набор пар ключ-значение;

  • Deque - реализует упорядоченную коллекцию с произвольным доступом, которая поддерживает эффективные вставки и удаления с обоих концов. По сути тот же массив;

To use OrderedSet, first add the swift-collections Swift package to your project. Then, import the OrderedCollections module: import OrderedCollections


5.3.1.4.4 Collections And Tuple Theme Folder | Back To iOSWiki Contents | 5.3.1.4.4.2 Associated Array Theme