English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift базовый курс

Операторы Swift

Swift управление потоком

Swift коллекции

Swift функция

Swift продвинутый

Массивы (Array) в Swift

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

В предыдущей статьеТипы данных SwiftВ статье мы学习了, как создавать переменные/константы данных, которые могут хранить единичное значение.

Но что, если мы хотим хранить несколько значений одного и того же типа? В Swift мы используем что-то叫做 массив вещей.

Что такое массив?

Массивы — это контейнеры, которые могут сохранять несколько данных одного типа в упорядоченном списке, то есть вы можете получить элементы в том же порядке, в котором они определены в массиве.

Массивы могут хранить данные любого типа, такие как Int, String, Class и т.д.

Как определить массив в Swift?

Вы можете создать пустой массив, указав тип в квадратных скобках [].

Пamiętajте, что вы должны включить тип в квадратных скобках, иначе Swift будет его рассматривать как обычный тип данных, и вы сможете хранить в нем только один элемент.

Пример 1: Объявление пустого массива

let emptyIntArr:[Int] = []
print(emptyIntArr)

При выполнении этого программы, вывод будет:

[ ]

В предыдущем примере мы объявили константу emptyIntArr, которая может хранить массив целых чисел и инициализировать его значением 0.

или

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

let emptyIntArr:Array<Int> = 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. Это делается с помощью инициализатора массива, совместно используемого с repeating и count.

let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4)
print(arrWithRepeatingValues)

При выполнении этого программы, вывод будет:

["Hello, World", "Hello, World", "Hello, World", "Hello, World"]

В вышеуказанном примере программы мы определили константу arrWithRepeatingValues, которая хранит строку Hello, World массив,и повторите этот же значение 4 раза, как указано в примере count.

Примечание:В Swift вы не можете создавать массивы фиксированной длины, как в других языках программирования. Массив фиксированной длины означает, что массив не может содержать больше элементов, чем вы определили при инициализации.

Как значения хранятся в массиве?

Предположим, что у вас есть константа, которая может хранить массив строк, например:

let 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 для доступа к элементам массива. Для получения дополнительной информации см.Цикл for-in в Swift.

Как изменить или добавить элемент в массив в 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() массива. Об этом будет gesagt.

Внутренние функции и атрибуты массива

1. Атрибут isEmpty

Этот атрибут определяет, пуст ли массив. Если в массиве нет никаких значений, он возвращает true, в противном случае false.

Пример 8: как работает isEmpty?

let intArr = [21, 34, 54, 12]
print(intArr.isEmpty)

При выполнении этого программы, вывод будет:

false

2. Атрибут first

Этот атрибут используется для доступа к первому элементу массива.

Пример 9: как работает first?

let intArr = [21, 34, 54, 12]
print(intArr.first)

При выполнении этого программы, вывод будет:

Optional(21)

Таким же образом, вы можете использовать атрибут last для доступа к последнему элементу массива.

3. Функция append (добавление)

Функция append используется для вставки/добавления элементов в конец массива.

Пример 10: как работает append?

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.insert Функция (вставка)

Эта функция используется для вставки/приложения элементов в массив по указанному индексу.

示例11:insert 如何工作?

var intArr = [21,34,54,12]
intArr.insert(22, at: 1)
print(intArr)

При выполнении этого программы, вывод будет:

[21, 22, 34, 54, 12]

Кроме того, вы также можете использовать removeproperty для удаления элемента по указанному индексу.

5.remove() Функция (удаление)

Эта функция удаляет и возвращает значение по указанному положению в массиве.

示例12:remove如何工作?

var strArr = ["ab","bc","cd","de"]
let removedVal = strArr.remove(at: 1)
print("удаленное значение is \(removedVal)")
print(strArr)

При выполнении этого программы, вывод будет:

Удаленный значение bc
["ab", "cd", "de"]

Кроме того, вы также можете использовать removeFirst для удаления первого элемента массива, removeLast для удаления последнего элемента и removeAll для удаления всех элементов.

6.reversed() Функция (обратный порядок)

Эта функция возвращает элементы массива в обратном порядке.

示例13:reversed()如何工作?

var intArr = [21,22,23,24]
let reversedArr = Array(intArr.reversed())
print(reversedArr)

При выполнении этого программы, вывод будет:

[24, 23, 22, 21]

7.count Свойство (счет)

Этот атрибут возвращает общее количество элементов в массиве.

示例14:count 计数

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("найден индекс")
    let val = intArr.remove(at: index)
    print(val)
}

При выполнении этого программы, вывод будет:

найден индекс
34