English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете о массивах, создании массивов, доступе к значениям массива и некоторых обычных операциях с массивами.
В предыдущей статьеТипы данных SwiftВ статье мы学习了, как создавать переменные/константы данных, которые могут хранить единичное значение.
Но что, если мы хотим хранить несколько значений одного и того же типа? В Swift мы используем что-то叫做 массив вещей.
Массивы — это контейнеры, которые могут сохранять несколько данных одного типа в упорядоченном списке, то есть вы можете получить элементы в том же порядке, в котором они определены в массиве.
Массивы могут хранить данные любого типа, такие как Int, String, Class и т.д.
Вы можете создать пустой массив, указав тип в квадратных скобках [].
Пamiętajте, что вы должны включить тип в квадратных скобках, иначе Swift будет его рассматривать как обычный тип данных, и вы сможете хранить в нем только один элемент.
let emptyIntArr:[Int] = [] print(emptyIntArr)
При выполнении этого программы, вывод будет:
[ ]
В предыдущем примере мы объявили константу emptyIntArr, которая может хранить массив целых чисел и инициализировать его значением 0.
или
Вы также можете определить пустой массив следующим образом:
let emptyIntArr:Array<Int> = Array() print(emptyIntArr)
или
Поскольку Swift является языком программирования с типовой инференцией, вы также можете создавать массивы без указания типа, но вам нужно использовать некоторые значения для инициализации, чтобы компилятор мог определить его тип:
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 Инициализирован массив.
Вы также можете повторить значение指定的次数, чтобы создать массив в 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), и так далее.
Вы можете использовать нижеЧтобы получить доступ к элементам массива, используйте синтаксис, то есть вам нужно включить индекс элемента в квадратных скобках после имени массива.
Предположим, что вы, как указано выше, объявили массив intArr. Первый элемент - это intArr[0], второй элемент - intArr[1], и так далее.
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.
Вы можете изменить элементы массива с помощью синтаксиса индексации и оператора присваивания, то есть вам нужно включить индекс обновляемого значения в квадратных скобках после имени массива, а затем оператор присваивания и новое значение.
var intArr = [21, 34, 54, 12] intArr[0] = 12 intArr[1] = 42 intArr[2] = 45 intArr[3] = 21 print(intArr)
При выполнении этого программы, вывод будет:
[12, 42, 45, 21]
Вы также можете изменить все элементы массива с помощью следующих новых значений, например:
var intArr = [21, 34, 54, 12] intArr = [1, 2, 3] print(intArr)
При выполнении этого программы, вывод будет:
[1, 2, 3]
Однако, чтобы добавить новый элемент к существующему массиву, вы не можете использовать синтаксис индексации. Если вы это сделаете, это приведет к ошибке. Вы не можете выполнить следующее:
var intArr = [21, 34, 54, 12] intArr[4] = 10
При выполнении этого программы, вывод будет:
фатальная ошибка: Индекс выходит за пределы диапазона
Ошибка в программе, когда новый элемент分配ается к массиву intArr, заключается в том, что intArr еще не выделил дополнительную память для индекса 4 и не может хранить данное значение.
Чтобы правильно вставить новый элемент в массив, мы используем метод append() массива. Об этом будет gesagt.
Этот атрибут определяет, пуст ли массив. Если в массиве нет никаких значений, он возвращает true, в противном случае false.
let intArr = [21, 34, 54, 12] print(intArr.isEmpty)
При выполнении этого программы, вывод будет:
false
Этот атрибут используется для доступа к первому элементу массива.
let intArr = [21, 34, 54, 12] print(intArr.first)
При выполнении этого программы, вывод будет:
Optional(21)
Таким же образом, вы можете использовать атрибут last для доступа к последнему элементу массива.
Функция 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]
Эта функция используется для вставки/приложения элементов в массив по указанному индексу.
var intArr = [21,34,54,12] intArr.insert(22, at: 1) print(intArr)
При выполнении этого программы, вывод будет:
[21, 22, 34, 54, 12]
Кроме того, вы также можете использовать removeproperty для удаления элемента по указанному индексу.
Эта функция удаляет и возвращает значение по указанному положению в массиве.
var strArr = ["ab","bc","cd","de"] let removedVal = strArr.remove(at: 1) print("удаленное значение is \(removedVal)") print(strArr)
При выполнении этого программы, вывод будет:
Удаленный значение bc ["ab", "cd", "de"]
Кроме того, вы также можете использовать removeFirst для удаления первого элемента массива, removeLast для удаления последнего элемента и removeAll для удаления всех элементов.
Эта функция возвращает элементы массива в обратном порядке.
var intArr = [21,22,23,24] let reversedArr = Array(intArr.reversed()) print(reversedArr)
При выполнении этого программы, вывод будет:
[24, 23, 22, 21]
Этот атрибут возвращает общее количество элементов в массиве.
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