Массивы Swift
Массивы Swift хранят несколько значений одного типа в упорядоченном списке. Одно и то же значение может встречаться несколько раз в разных позициях массива.
Массивы Swift обеспечивают проверку типов элементов; если типы различаются, сообщается об ошибке. Массивы Swift должны иметь вид Array<Element>, где Element — единственный тип данных, допустимый в массиве.
Если вы создаете массив и присваиваете его переменной, созданная коллекция является изменяемой. Это означает, что после создания массива вы можете изменять элементы массива, добавляя, удаляя или изменяя их. Если вы присваиваете массив константе, массив является неизменяемым, и ни размер, ни содержимое массива нельзя изменить.
Создание массивов
Мы можем использовать синтаксис инициализатора, чтобы создать пустой массив определенного типа данных:
var someArray = [SomeType]()
Ниже приведен синтаксис создания массива с инициализированным размером:
var someArray = [SomeType](repeating: InitialValue, count: NumbeOfElements)
В следующем примере создается массив типа Int с количеством 3 и начальным значением 0:
var someInts = [Int](repeating: 0, count: 3)
В следующем примере создается массив, содержащий три элемента:
var someInts:[Int] = [10, 20, 30]
Доступ к массивам
Мы можем получать доступ к элементам массива по индексу массива, синтаксис следующий:
var someVar = someArray[index]
Индекс начинается с 0; то есть индекс 0 соответствует первому элементу, индекс 1 соответствует второму элементу, и так далее.
С помощью следующего примера мы можем узнать, как создавать, инициализировать и получать доступ к массивам:
import Cocoa var someInts = [Int](repeating: 10, count: 3) var someVar = someInts[0] print( "第一个元素的值 \(someVar!)" ) print( "第二个元素的值 \(someInts[1]!)" ) print( "第三个元素的值 \(someInts[2]!)" )
Вывод выполнения вышеуказанной программы:
第一个元素的值 10 第二个元素的值 10 第三个元素的值 10
Изменение массивов
Вы можете использовать метод append() или оператор присваивания +=, чтобы добавлять элементы в конец массива. Как показано ниже, мы инициализируем массив и добавляем в него элементы:
import Cocoa var someInts = [Int]() someInts.append(20) someInts.append(30) someInts += [40] var someVar = someInts[0] print( "第一个元素的值 \(someVar)" ) print( "第二个元素的值 \(someInts[1])" ) print( "第三个元素的值 \(someInts[2])" )
Вывод выполнения вышеуказанной программы:
第一个元素的值 20 第二个元素的值 30 第三个元素的值 40
Мы также можем изменять значение элементов массива по индексу:
import Cocoa var someInts = [Int]() someInts.append(20) someInts.append(30) someInts += [40] // 修改最后一个元素 someInts[2] = 50 var someVar = someInts[0] print( "第一个元素的值 \(someVar)" ) print( "第二个元素的值 \(someInts[1])" ) print( "第三个元素的值 \(someInts[2])" )
Вывод выполнения вышеуказанной программы:
第一个元素的值 20 第二个元素的值 30 第三个元素的值 50
Итерация по массивам
Мы можем использовать цикл for-in, чтобы перебрать все элементы данных в массиве:
import Cocoa
var someStrs = [String]()
someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Example")
someStrs += ["Google"]
for item in someStrs {
print(item)
}
Вывод выполнения вышеуказанной программы:
Apple Amazon Example Google
Если нам нужны и значение, и индекс каждого элемента данных, мы можем использовать метод enumerated() типа String для перебора массива. Пример выглядит следующим образом:
import Cocoa
var someStrs = [String]()
someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Example")
someStrs += ["Google"]
for (index, item) in someStrs.enumerated() {
print("在 index = \(index) 位置上的值为 \(item)")
}
Вывод выполнения вышеуказанной программы:
在 index = 0 位置上的值为 Apple 在 index = 1 位置上的值为 Amazon 在 index = 2 位置上的值为 Example 在 index = 3 位置上的值为 Google
Объединение массивов
Мы можем использовать оператор сложения (+) для объединения двух существующих массивов одного типа. Тип данных нового массива будет выведен из типов данных двух массивов:
import Cocoa
var intsA = [Int](repeating: 2, count:2)
var intsB = [Int](repeating: 1, count:3)
var intsC = intsA + intsB
for item in intsC {
print(item)
}
Вывод выполнения вышеуказанной программы:
2 2 1 1 1
Свойство count
Мы можем использовать свойство count для вычисления количества элементов в массиве:
import Cocoa
var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)
var intsC = intsA + intsB
print("intsA 元素个数为 \(intsA.count)")
print("intsB 元素个数为 \(intsB.count)")
print("intsC 元素个数为 \(intsC.count)")
Вывод выполнения вышеуказанной программы:
intsA 元素个数为 2 intsB 元素个数为 3 intsC 元素个数为 5
Свойство isEmpty
Мы можем использовать свойство isEmpty, доступное только для чтения, чтобы определить, пуст ли массив; оно возвращает логическое значение:
import Cocoa
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)")
Вывод выполнения вышеуказанной программы:
intsA.isEmpty = false intsB.isEmpty = false intsC.isEmpty = trueДругие расширения