Учебники

Swift — Массивы

Массивы Swift 4 используются для хранения упорядоченных списков значений одного типа. Swift 4 устанавливает строгую проверку, которая не позволяет вводить неверный тип в массив, даже по ошибке.

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

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

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

var someArray = [SomeType]()

Вот синтаксис для создания массива заданного размера a * и инициализации его значением —

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

Вы можете использовать следующую инструкцию, чтобы создать пустой массив типа Int, имеющий 3 элемента и начальное значение как ноль —

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

Ниже приведен еще один пример создания массива из трех элементов и назначения трех значений этому массиву:

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

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

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

var someVar = someArray[index]

Здесь индекс начинается с 0, что означает, что к первому элементу можно получить доступ, используя индекс как 0, ко второму элементу можно получить доступ, используя индекс как 1, и так далее. В следующем примере показано, как создавать, инициализировать и обращаться к массивам:

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

var someVar = someInts[0]
print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Value of first element is 10
Value of second element is 10
Value of third element is 10

Модификация массивов

Вы можете использовать метод append () или оператор присваивания (+ =), чтобы добавить новый элемент в конец массива. Посмотрите на следующий пример. Здесь мы изначально создаем пустой массив, а затем добавляем новые элементы в тот же массив —

Live Demo

var someInts = [Int]()

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

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Value of first element is 20
Value of second element is 30
Value of third element is 40

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

Live Demo

var someInts = [Int]()

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

// Modify last element
someInts[2] = 50

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Value of first element is 20
Value of second element is 30
Value of third element is 50

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

Вы можете использовать цикл for-in для итерации по всему набору значений в массиве, как показано в следующем примере:

Live Demo

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]
for item in someStrs {
   print(item)
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Apple
Amazon
Google

Вы можете использовать функцию enumerate (), которая возвращает индекс элемента вместе с его значением, как показано ниже в следующем примере —

Live Demo

var someStrs = [String]()

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

for (index, item) in someStrs.enumerated() {
   print("Value at index = \(index) is \(item)")
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Value at index = 0 is Apple
Value at index = 1 is Amazon
Value at index = 2 is Google

Добавление двух массивов

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

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

var intsC = intsA + intsB
for item in intsC {
   print(item)
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

2
2
1
1
1

Свойство графа

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

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

var intsC = intsA + intsB

print("Total items in intsA = \(intsA.count)")
print("Total items in intsB = \(intsB.count)")
print("Total items in intsC = \(intsC.count)")

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Total items in intsA = 2
Total items in intsB = 3
Total items in intsC = 5

Пустая недвижимость

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

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)")

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —