Swift Arrays: как использовать и зачем? (С примерами)

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

В предыдущей статье о типах данных 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 

Интересные статьи...