Массивы Swift

Массивы Swift хранят несколько значений одного типа в упорядоченном списке. Одно и то же значение может встречаться несколько раз в разных позициях массива.

Массивы Swift обеспечивают проверку типов элементов; если типы различаются, сообщается об ошибке. Массивы Swift должны иметь вид Array<Element>, где Element — единственный тип данных, допустимый в массиве.

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


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

Мы можем использовать синтаксис инициализатора, чтобы создать пустой массив определенного типа данных:

var someArray = [SomeType]()

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

var someArray = [SomeType](repeating: InitialValue, count: NumbeOfElements)

В следующем примере создается массив типа Int с количеством 3 и начальным значением 0:

var someInts = [Int](repeating: 0, count: 3)

В следующем примере создается массив, содержащий три элемента:

var someInts:[Int] = [10, 20, 30]

Доступ к массивам

Мы можем получать доступ к элементам массива по индексу массива, синтаксис следующий:

var someVar = someArray[index]

Индекс начинается с 0; то есть индекс 0 соответствует первому элементу, индекс 1 соответствует второму элементу, и так далее.

С помощью следующего примера мы можем узнать, как создавать, инициализировать и получать доступ к массивам:

import Cocoa

var someInts = [Int](repeating: 10, count: 3)

var someVar = someInts[0]

print( "第一个元素的值 \(someVar!)" )
print( "第二个元素的值 \(someInts[1]!)" )
print( "第三个元素的值 \(someInts[2]!)" )

Вывод выполнения вышеуказанной программы:

第一个元素的值 10
第二个元素的值 10
第三个元素的值 10

Изменение массивов

Вы можете использовать метод append() или оператор присваивания +=, чтобы добавлять элементы в конец массива. Как показано ниже, мы инициализируем массив и добавляем в него элементы:

import Cocoa

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "第一个元素的值 \(someVar)" )
print( "第二个元素的值 \(someInts[1])" )
print( "第三个元素的值 \(someInts[2])" )

Вывод выполнения вышеуказанной программы:

第一个元素的值 20
第二个元素的值 30
第三个元素的值 40

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

import Cocoa

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

// 修改最后一个元素
someInts[2] = 50

var someVar = someInts[0]

print( "第一个元素的值 \(someVar)" )
print( "第二个元素的值 \(someInts[1])" )
print( "第三个元素的值 \(someInts[2])" )

Вывод выполнения вышеуказанной программы:

第一个元素的值 20
第二个元素的值 30
第三个元素的值 50

Итерация по массивам

Мы можем использовать цикл for-in, чтобы перебрать все элементы данных в массиве:

import Cocoa

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Example")
someStrs += ["Google"]

for item in someStrs {
   print(item)
}

Вывод выполнения вышеуказанной программы:

Apple
Amazon
Example
Google

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

import Cocoa

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Example")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
    print("在 index = \(index) 位置上的值为 \(item)")
}

Вывод выполнения вышеуказанной программы:

在 index = 0 位置上的值为 Apple
在 index = 1 位置上的值为 Amazon
在 index = 2 位置上的值为 Example
在 index = 3 位置上的值为 Google

Объединение массивов

Мы можем использовать оператор сложения (+) для объединения двух существующих массивов одного типа. Тип данных нового массива будет выведен из типов данных двух массивов:

import Cocoa

var intsA = [Int](repeating: 2, count:2)
var intsB = [Int](repeating: 1, count:3)

var intsC = intsA + intsB

for item in intsC {
    print(item)
}

Вывод выполнения вышеуказанной программы:

2
2
1
1
1

Свойство count

Мы можем использовать свойство count для вычисления количества элементов в массиве:

import Cocoa

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB

print("intsA 元素个数为 \(intsA.count)")
print("intsB 元素个数为 \(intsB.count)")
print("intsC 元素个数为 \(intsC.count)")

Вывод выполнения вышеуказанной программы:

intsA 元素个数为 2
intsB 元素个数为 3
intsC 元素个数为 5

Свойство isEmpty

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

import Cocoa

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)
var intsC = [Int]()

print("intsA.isEmpty = \(intsA.isEmpty)")
print("intsB.isEmpty = \(intsB.isEmpty)")
print("intsC.isEmpty = \(intsC.isEmpty)")

Вывод выполнения вышеуказанной программы:

intsA.isEmpty = false
intsB.isEmpty = false
intsC.isEmpty = true
Другие расширения