Массивы 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 () или оператор присваивания (+ =), чтобы добавить новый элемент в конец массива. Посмотрите на следующий пример. Здесь мы изначально создаем пустой массив, а затем добавляем новые элементы в тот же массив —
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
Вы можете изменить существующий элемент массива, назначив новое значение по заданному индексу, как показано в следующем примере:
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 для итерации по всему набору значений в массиве, как показано в следующем примере:
var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs += ["Google"] for item in someStrs { print(item) }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Apple Amazon Google
Вы можете использовать функцию enumerate (), которая возвращает индекс элемента вместе с его значением, как показано ниже в следующем примере —
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)")
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —