Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика XCode

Разработчик

Справочное руководство по библиотеке стандарта Swift

PDF
На этой странице

Массив <T>

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

Для получения дополнительной информации о Array, посмотрите Типы Набора.

Создание массива

init ()

Создает пустой массив типа T.

Объявление

  • init()

Обсуждение

Создание массива с помощью этого инициализатора:

  • var emptyArray = Array<Int>()

эквивалентно использованию синтаксиса удобства:

  • var equivalentEmptyArray = [Int]()

init (count:repeatedValue:)

Создает массив с данным числом элементов, каждый инициализированный к тому же значению.

Объявление

  • init(count: Int, repeatedValue: T)

Обсуждение

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

Например:

  • let numericArray = Array(count: 3, repeatedValue: 42)
  • // numericArray is [42, 42, 42]
  • let stringArray = Array(count: 2, repeatedValue: "Hello")
  • // stringArray is ["Hello", "Hello"]

Доступ к элементам матрицы

нижний индекс (_: Интервал)

Получает или устанавливает существующие элементы в массиве с помощью преобразования в нижний индекс квадратной скобки.

Объявление

  • subscript(index: Int) -> T

Обсуждение

Используйте преобразование в нижний индекс для доступа к отдельным элементам в любом массиве:

  • var subscriptableArray = ["zero", "one", "two", "three"]
  • let zero = subscriptableArray[0]
  • // zero is "zero"
  • let three = subscriptableArray[3]
  • // three is "three"

Если Вы объявляете массив с помощью var ключевое слово (т.е. как переменная), можно также использовать преобразование в нижний индекс для изменения значения любого существующего элемента в массиве:

  • subscriptableArray[0] = "nothing"
  • subscriptableArray[3] = "three items"

Не возможно вставить дополнительные элементы в преобразование в нижний индекс использования массива:

  • subscriptableArray[4] = "new item"
  • // Fatal error: Array index out of range

Если Вы хотите добавить дополнительные элементы к массиву, используйте append(_:) метод или += оператор вместо этого.

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

  • let constantArray = ["zero", "one", "two", "three"]
  • constantArray[0] = "nothing"
  • // Error: cannot mutate a constant array

нижний индекс (_: Диапазон <Интервал>)

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

Объявление

  • subscript(subRange: Range<Int>) -> Slice<T>

Обсуждение

Используйте преобразование в нижний индекс диапазона для доступа к одному или более существующим элементам в любом массиве:

  • var subscriptableArray = ["zero", "one", "two", "three"]
  • let subRange = subscriptableArray[1...3]
  • // subRange = ["one", "two", "three"]

Если Вы объявляете массив с помощью var ключевое слово (т.е. как переменная), можно также использовать преобразование в нижний индекс для изменения значений диапазона существующих элементов:

  • subscriptableArray[1...2] = ["oneone", "twotwo"]
  • // subscriptableArray is now ["zero", "oneone", "twotwo", "three"]

Вы не должны обеспечивать то же число элементов, как Вы заменяете:

  • subscriptableArray[1...2] = []
  • // subscriptableArray is now ["zero", "three"]

Не возможно вставить дополнительные элементы в преобразование в нижний индекс использования массива:

  • subscriptableArray[4...5] = ["four", "five"]
  • // Fatal error: Array replace: subRange extends past the end

Если Вы хотите добавить дополнительные элементы к массиву, используйте append(_:) метод или += оператор вместо этого.

Вы не можете использовать преобразование в нижний индекс для изменения любых значений в массиве, что Вы объявляете использование let ключевое слово (т.е. как константа):

  • let constantArray = ["zero", "one", "two", "three"]
  • constantArray[1...2] = []
  • // Error: cannot mutate a constant array

Добавление и удаление элементов

добавьте (_:)

Добавляет новый элемент как последний элемент в существующем массиве.

Объявление

  • mutating func append(newElement: T)

Обсуждение

Используйте этот метод для добавления нового элемента к существующему массиву. Новый элемент будет добавлен как последний элемент в наборе:

  • var array = [0, 1]
  • array.append(2)
  • // array is [0, 1, 2]
  • array.append(3)
  • // array is [0, 1, 2, 3]

Если Вы объявили массив с помощью, можно только добавить новые значения к массиву var ключевое слово (т.е. как переменная и не константа):

  • let constantArray = [0, 1]
  • constantArray.append(2)
  • // Error: cannot mutate a constant array

вставьте (_: atIndex:)

Вставляет элемент в набор в данном индексе.

Объявление

  • mutating func insert(newElement: T, atIndex i: Int)

Обсуждение

Используйте этот метод для вставки нового элемента где угодно в диапазоне существующих элементов, или как последний элемент:

  • var array = [1, 2, 3]
  • array.insert(0, atIndex: 0)
  • // array is [0, 1, 2, 3]

Индекс должен быть меньше чем или равен числу элементов в наборе. При попытке вставить элемент в большем индексе, то Вы инициируете утверждение:

  • array.insert(6, atIndex: 6)
  • // Fatal error: Array replace: subRange extends past the end

Если Вы объявили массив с помощью, можно только вставить новые значения в массив var ключевое слово (т.е. как переменная и не константа):

  • let constantArray = [1, 2, 3]
  • constantArray.insert(0, atIndex: 0)
  • // Error: cannot mutate a constant array

removeAtIndex (_:)

Удаляет элемент в данном индексе и возвращает его.

Объявление

  • mutating func removeAtIndex(index: Int) -> T

Обсуждение

Используйте этот метод для удаления элемента в данном index. Возвращаемое значение метода является элементом, удаленным:

  • var array = [0, 1, 2, 3]
  • let removed = array.removeAtIndex(0)
  • // array is [1, 2, 3]
  • // removed is 0

Индекс должен быть меньше, чем число элементов в наборе. При попытке удалить элемент в большем индексе, то Вы инициируете утверждение:

  • array.removeAtIndex(5)
  • // Fatal error: Array index out of range

Если Вы объявили массив с помощью, можно только удалить элемент из массива var ключевое слово (т.е. как переменная и не константа):

  • let constantArray = [0, 1, 2]
  • constantArray.removeAtIndex(0)
  • // Error: cannot mutate a constant array

removeLast ()

Удаляет последний элемент из набора и возвращает его.

Объявление

  • mutating func removeLast() -> T

Обсуждение

Используйте этот метод для удаления последнего элемента в получателе. Возвращаемое значение метода является элементом, удаленным:

  • var array = [1, 2, 3]
  • let removed = array.removeLast()
  • // array is [1, 2]
  • // removed is 3

Должен быть по крайней мере один элемент в массиве перед вызовом этого метода — при вызове этого метода на пустом массиве Вы инициируете утверждение:

  • var emptyArray = [Int]()
  • let tryToRemove = emptyArray.removeLast()
  • // Fatal error: can't removeLast from an empty Array

Если Вы объявили массив с помощью, можно только удалить последний элемент из массива var ключевое слово (т.е. как переменная и не константа):

  • let constantArray = [1, 2]
  • constantArray.removeLast()
  • // Error: cannot mutate a constant array

removeAll (keepCapacity:)

Удаляет все элементы из набора, и по умолчанию очищает буфер базовой системы хранения.

Объявление

  • mutating func removeAll(keepCapacity: Bool = default)

Обсуждение

Используйте этот метод для удаления всех элементов в массиве:

  • var array = [0, 1, 2, 3]
  • array.removeAll()
  • let count = array.count
  • // count is 0

Если Вы не укажете иначе, базовая внешняя память будет очищена.

Если Вы объявили массив с помощью, можно только удалить все элементы из массива var ключевое слово (т.е. как переменная и не константа):

  • let constantArray = [1, 2]
  • constantArray.removeAll()
  • // Error: cannot mutate a constant array

reserveCapacity (_:)

Гарантирует, что базовая система хранения может содержать данное общее количество элементов.

Объявление

  • mutating func reserveCapacity(minimumCapacity: Int)

Обсуждение

Гарантируйте, что массив имеет достаточно непрерывной базовой внешней памяти для хранения общего количества элементов, указанных для minimumCapacity.

Запросы массива

количество

Целочисленное значение, представляющее число элементов в массиве (только для чтения).

Объявление

  • var count: Int { get }

Обсуждение

Используйте это свойство только для чтения для запросов числа элементов в массиве:

  • var array = ["zero", "one", "two"]
  • let firstCount = array.count
  • // firstCount is 3
  • array += "three"
  • let secondCount = array.count
  • // secondCount is 4

isEmpty

Булево значение, определяющее, является ли массив пустым (только для чтения).

Объявление

  • var isEmpty: Bool { get }

Обсуждение

Используйте это свойство только для чтения, чтобы запросить, пуст ли массив:

  • var array = ["zero", "one", "two", "three"]
  • let firstCheck = array.isEmpty
  • // firstCheck is false
  • array.removeAll()
  • let secondCheck = array.isEmpty
  • // secondCheck is true

способность

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

Объявление

  • var capacity: Int { get }

Обсуждение

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

Алгоритмы

вид (_:)

Сортирует массив на месте с помощью данного закрытия для определения порядка предоставленной пары элементов.

Объявление

  • mutating func sort(isOrderedBefore: (T, T) -> Bool)

Обсуждение

Используйте этот метод для сортировки элементов в массиве. Закрытие, для которого Вы предоставляете isOrderedBefore должен возвратить булево значение, чтобы указать, должен ли один элемент быть прежде (true) или после (false) другой элемент:

  • var array = [3, 2, 5, 1, 4]
  • array.sort { $0 < $1 }
  • // array is [1, 2, 3, 4, 5]
  • array.sort { $1 < $0 }
  • // array is [5, 4, 3, 2, 1]

Если Вы объявили массив с помощью, можно только сортировать массив на месте var ключевое слово (т.е. как переменная):

  • let constantArray = [3, 2, 5, 1, 4]
  • constantArray.sort { $0 < $1 }
  • // Error: cannot mutate a constant array

сортированный (_:)

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

Объявление

  • func sorted(isOrderedBefore: (T, T) -> Bool) -> [T]

Обсуждение

Используйте этот метод для возврата нового массива, содержащего сортированные элементы от массива. Закрытие, для которого Вы предоставляете isOrderedBefore должен возвратить булево значение, чтобы указать, должен ли один элемент быть прежде (true) или после (false) другой элемент:

  • let array = [3, 2, 5, 1, 4]
  • let sortedArray = array.sorted { $0 < $1 }
  • // sortedArray is [1, 2, 3, 4, 5]
  • let descendingArray = array.sorted { $1 < $0 }
  • // descendingArray is [5, 4, 3, 2, 1]

реверс ()

Возвращает массив, содержащий элементы массива в обратном порядке индексом.

Объявление

  • func reverse() -> [T]

Обсуждение

Используйте этот метод для возврата нового массива, содержащего элементы массива в обратном порядке; т.е. последний элемент будет первым, предпоследнее будет вторым и т.д.:

  • let array = [1, 2, 3, 4, 5]
  • let reversedArray = array.reverse()
  • // reversedArray = [5, 4, 3, 2, 1]

фильтр (_:)

Возвращает массив, содержащий элементы массива, для которого предоставленное закрытие указывает соответствие.

Объявление

  • func filter(includeElement: (T) -> Bool) -> [T]

Обсуждение

Используйте этот метод для возврата нового массива путем фильтрации существующего массива. Закрытие, для которого Вы предоставляете includeElement: должен возвратить булево значение, чтобы указать, должен ли элемент быть включен (true) или исключенный (false) от заключительного набора:

  • let array = [0, 1, 2, 3, 4, 5, 6, 7]
  • let filteredArray = array.filter { $0 % 2 == 0 }
  • // filteredArray is [0, 2, 4, 6]

карта (_:)

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

Объявление

  • func map<U>(transform: (T) -> U) -> [U]

Обсуждение

Используйте этот метод для возврата нового массива, содержащего результаты применения предоставленного закрытия для преобразования каждого элемента в существующий массив:

  • let array = [0, 1, 2, 3]
  • let multipliedArray = array.map { $0 * 2 }
  • // multipliedArray is [0, 2, 4, 6]
  • let describedArray = array.map { "Number: \($0)" }
  • // describedArray is [Number: 0, Number: 1, Number: 2, Number: 3]

сократите (_: объединение:)

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

Объявление

  • func reduce<U>(initial: U, combine: (U, T) -> U) -> U

Обсуждение

Используйте этот метод для сокращения набора элементов вниз к единственному значению путем рекурсивного применения предоставленного закрытия:

  • let array = [1, 2, 3, 4, 5]
  • let addResult = array.reduce(0) { $0 + $1 }
  • // addResult is 15
  • let multiplyResult = array.reduce(1) { $0 * $1 }
  • // multiplyResult is 120

Два результата создают следующим образом:

  1. Параметрами первому вызову закрытия является начальное значение, которое Вы предоставляете и первый элемент в наборе.

    В addResult случай, означающий initialValue из 0 и первый элемент 1: { 0 + 1 }.

    В multiplyResult случай, означающий initialValue из 1 и первый элемент 1: {1 * 1}.

  2. Затем, закрытие вызывают с предыдущим результатом как первый параметр и второй элемент как второй параметр.

    В addResult случай, означающий результат 1 и следующий элемент 2: {1 + 2}.

    В multiplyResult случай, означающий результат 1 и следующий элемент 2: {1 * 2}.

  3. Закрытия продолжают быть вызванными с предыдущим результатом и следующим элементом как параметры:

    В addResult означающий случай, {3 + 3}, {6 + 4}, {10 + 5}, с конечным результатом 15.

    В multiplyResult означающий случай, {2 * 3}, {6 * 4}, {24 * 5}, с конечным результатом 120.

Операторы

+=

Добавляет элементы последовательности или набора к существующему массиву.

Объявление

  • func +=<T, S: SequenceType where S.Generator.Element == T>(inout lhs: [T], rhs: S)
  • func +=<T, C: CollectionType where C.Generator.Element == T>(inout lhs: [T], rhs: C)

Обсуждение

+= оператор предлагает простой способ добавить элементы последовательности или набора до конца существующего массива:

  • var array = [0, 1, 2, 3]
  • array += [4, 5, 6]
  • // array is [0, 1, 2, 3, 4, 5, 6]

Тип элементов в последовательности или наборе должен соответствовать тип существующих элементов в массиве:

  • array += ["hello"]
  • // Error: 'array' contains elements of type 'Int', not 'String'.

Можно только использовать += оператор для добавления элементов последовательности или набора к массиву, если Вы объявили массив с помощью var ключевое слово (т.е. как переменная и не константа):

  • let constantArray = [0, 1, 2]
  • constantArray += [3]
  • // Error: cannot mutate a constant array