В этом руководстве вы узнаете о массивах, их создании, доступе к значениям массива и некоторых общих операциях с массивом.
В предыдущей статье о типах данных Swift мы узнали о создании переменных / констант некоторого типа данных, которые могут содержать одно значение.
Но что, если мы хотим хранить несколько значений одного и того же типа данных. В Swift мы используем то, что называется Array .
Что такое массив?
Массив - это просто контейнер, который может содержать несколько данных (значений) типа данных в упорядоченном списке, то есть вы получаете элементы в том же порядке, в котором вы определили элементы в массиве.
Массив может хранить значения любого типа данных , например Int
, String
класс и т.д.
Как объявить массив в Swift?
Вы можете создать пустой массив, указав тип данных в квадратных скобках ()
.
Помните, вы должны указать тип в квадратных скобках, иначе Swift будет рассматривать его как обычный тип данных, и вы можете сохранить в нем только одно значение.
Пример 1: Объявление пустого массива
let emptyIntArr:(Int) = () print(emptyIntArr)
Когда вы запустите программу, вывод будет:
()
В приведенной выше программе мы объявили константу emptyIntArr, которая может хранить массив целых чисел и инициализирована значениями 0.
ИЛИ
Вы также можете определить пустой массив, как показано ниже:
let emptyIntArr:Array = Array() print(emptyIntArr)
ИЛИ
Поскольку swift - это язык вывода типов, вы также можете создать массив напрямую, не указывая тип данных, но должны инициализировать его некоторыми значениями, чтобы компилятор мог определить его тип как:
Пример 2: Объявление массива с некоторыми значениями
let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr)
Когда вы запустите программу, вывод будет:
(1, 2, 3, 4, 5, 6, 7, 8, 9)
В приведенной выше программе мы объявили константу someIntArr, которая может хранить массив Integer без явного указания типа. Также мы инициализировали массив значениями 1, 2, 3, 4, 5, 6, 7, 8, 9 .
Пример 3: Объявление массива, содержащего указанное количество одного повторяющегося значения
Вы также можете повторять значение заданное количество раз, чтобы сформировать массив в Swift. Это делается с помощью инициализатора массива с повторением и счетчиком.
let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues)
Когда вы запустите программу, вывод будет:
(«Привет, мир», «Привет, мир», «Привет, мир», «Привет, мир»)
В приведенной выше программе мы определили константу arrWithRepeatingValues, которая хранит массив строк Hello, World и повторяет одно и то же значение 4 раза, как указано в счетчике.
Примечание. В Swift нельзя создавать массивы фиксированной длины, как в других языках программирования. Массив фиксированного размера означает, что в массиве не может быть больше элементов, чем вы определяете во время инициализации.
Как значения хранятся в массиве?
Предположим, у вас есть константа, которая может хранить массив строк, как показано ниже:
пусть intArr = (21, 34, 54, 12)
Наглядное представление того, как значения хранятся в массиве, можно показать ниже:
Все создаваемые вами массивы начинаются с индекса 0. Первый элемент сохраняется в индексе 0, второй элемент - в следующем индексе (1) и так далее.
Как получить доступ к элементам массива в Swift?
Вы можете получить доступ к элементам массива, используя синтаксис нижнего индекса, т.е. вам необходимо включить индекс значения, к которому вы хотите получить доступ, в квадратных скобках сразу после имени массива.
Предположим, вы объявили массив intArr, как указано выше. Первый элемент - это intArr (0), второй элемент - это intArr (1) и так далее.
Пример 4: Доступ к элементам массива
let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3))
Когда вы запустите программу, вывод будет:
21 34 54 12
Вы также можете получить доступ к элементам массива с помощью циклов for-in. См. Раздел Swift For-in loop, чтобы узнать об этом больше.
Как изменить / добавить элементы массива в Swift?
Вы можете изменять элементы массива, используя синтаксис нижнего индекса и оператор присваивания, т.е. вам нужно включить индекс значения, которое вы хотите обновить, в квадратных скобках после имени массива, за которым следует оператор присваивания и новое значение.
Пример 5: изменение элементов массива
var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr)
Когда вы запустите программу, вывод будет:
(12, 42, 45, 21)
Вы также можете изменить все элементы массива с новыми значениями, как показано ниже:
Пример 6: изменение массива в целом
var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr)
Когда вы запустите программу, вывод будет:
(1, 2, 3)
Однако для добавления нового элемента в существующий массив нельзя использовать синтаксис индекса. Если вы это сделаете, вы получите ошибку. Нельзя сделать что-то подобное:
Пример 7: Добавление нового элемента в массив с использованием синтаксиса индекса (не работает)
var intArr = (21, 34, 54, 12) intArr(4) = 10
Когда вы запустите программу, вывод будет:
фатальная ошибка: индекс вне допустимого диапазона
Приведенная выше программа выдает ошибку при присвоении нового элемента массиву intArr. Это связано с тем, что intArr не выделил дополнительную память для индекса 4 и не может сохранить данное значение.
Чтобы правильно вставить новый элемент в массив, мы используем append()
метод массива . append()
описано в следующем разделе.
Некоторые полезные встроенные функции и свойства массива
1. isEmpty
Это свойство определяет, пуст массив или нет. Он возвращается, true
если массив не содержит никакого значения, в противном случае возвращается false
.
Пример 8: Как работает isEmpty?
let intArr = (21, 34, 54, 12) print(intArr.isEmpty)
Когда вы запустите программу, вывод будет:
ложный
2. первый
Это свойство используется для доступа к первому элементу массива.
Пример 9: Как работает первый?
let intArr = (21, 34, 54, 12) print(intArr.first)
Когда вы запустите программу, вывод будет:
Необязательно (21)
Точно так же вы можете использовать last
свойство для доступа к последнему элементу массива.
3. добавить
Функция добавления используется для вставки / добавления элемента в конец массива.
Пример 10: Как работает добавление?
var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr)
Когда вы запустите программу, вывод будет:
(21, 34, 54, 12, 32)
Вы также можете добавить содержимое одного массива к другому массиву как:
var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr)
Когда вы запустите программу, вывод будет:
(1, 2, 3, 4, 5, 6, 7, 8)
4. вставить
Эта функция используется для вставки / добавления элемента по определенному индексу массива.
Пример 11: Как работает вставка?
var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr)
Когда вы запустите программу, вывод будет:
(21, 22, 34, 54, 12)
Точно так же вы также можете использовать remove
свойство для удаления элемента по указанному индексу.
5. удалить
Эта функция удаляет и возвращает значение, указанное в указанной позиции из массива.
Пример 12: Как работает удаление?
var strArr = ("ab","bc","cd","de") let removedVal = strArr.remove(at: 1) print("removed value is (removedVal)") print(strArr)
Когда вы запустите программу, вывод будет:
удаленное значение - bc ("ab", "cd", "de")
Точно так же вы также можете использовать такие функции, как removeFirst
удаление первого элемента массива, removeLast
удаление последнего элемента массива и removeAll
очистка массива.
6. перевернутый
Эта функция возвращает элементы массива в обратном порядке.
Пример 13: Как работает reversed ()?
var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr)
Когда вы запустите программу, вывод будет:
(24, 23, 22, 21)
7. считать
Это свойство возвращает общее количество элементов в массиве.
Пример 14: счет
let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count)
Когда вы запустите программу, вывод будет:
4
То, что нужно запомнить
При использовании синтаксиса индекса для доступа к элементам массива в Swift вы должны быть уверены, что значение находится в индексе, иначе вы получите сбой во время выполнения. Посмотрим на это на примере:
let intArr = (21, 34, 54, 12) print(intArr(-1))
Когда вы запустите программу, вывод будет:
фатальная ошибка: индекс вне допустимого диапазона
В приведенной выше программе индекс -1 не имеет значения . Поэтому, когда вы попытаетесь получить доступ к значению в индексе, вы получите сбой во время выполнения.
Чтобы предотвратить это, сначала найдите индекс элемента, который вы пытаетесь удалить. Затем удалите элемент по индексу, как показано ниже:
var intArr = (21, 34, 54, 12) if let index = intArr.index(of: 34) ( print("found index") let val = intArr.remove(at: index) print(val) )
Когда вы запустите программу, вывод будет:
найдено индекс 34