Swift - Массивы

Массивы Swift 4 используются для хранения упорядоченных списков значений одного типа. Swift 4 устанавливает строгую проверку, которая не позволяет вам ввести неправильный тип в массив даже по ошибке.

Если вы назначаете созданный массив переменной, он всегда является изменяемым, что означает, что вы можете изменять его, добавляя, удаляя или изменяя его элементы; но если вы присваиваете массив константе, то этот массив неизменяем, и его размер и содержимое не могут быть изменены.

Создание массивов

Вы можете создать пустой массив определенного типа, используя следующий синтаксис инициализатора -

var someArray = [SomeType]()

Вот синтаксис для создания массива заданного размера a * и инициализации его значением -

var someArray = [SomeType](count: NumbeOfElements, repeatedValue: InitialValue)

Вы можете использовать следующий оператор для создания пустого массива Int тип, имеющий 3 элемента и начальное значение как ноль -

var someInts = [Int](count: 3, repeatedValue: 0)

Ниже приведен еще один пример создания массива из трех элементов и присвоения ему трех значений.

var someInts:[Int] = [10, 20, 30]

Доступ к массивам

Вы можете получить значение из массива, используя subscript синтаксис, передача индекса значения, которое вы хотите получить, в квадратных скобках сразу после имени массива следующим образом:

var someVar = someArray[index]

Здесь indexначинается с 0, что означает, что к первому элементу можно получить доступ, используя индекс как 0, ко второму элементу можно получить доступ, используя индекс как 1 и так далее. В следующем примере показано, как создавать, инициализировать и получать доступ к массивам.

var someInts = [Int](count: 3, repeatedValue: 10)

var someVar = someInts[0]
print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Value of first element is 10
Value of second element is 10
Value of third element is 10

Изменение массивов

Вы можете использовать append()метод или оператор присваивания сложения (+ =), чтобы добавить новый элемент в конец массива. Взгляните на следующий пример. Здесь сначала мы создаем пустой массив, а затем добавляем новые элементы в тот же массив -

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Value of first element is 20
Value of second element is 30
Value of third element is 40

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

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

// Modify last element
someInts[2] = 50

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Value of first element is 20
Value of second element is 30
Value of third element is 50

Итерация по массиву

Вы можете использовать for-in цикл для перебора всего набора значений в массиве, как показано в следующем примере:

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]
for item in someStrs {
   print(item)
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Apple
Amazon
Google

Вы можете использовать enumerate() функция, которая возвращает индекс элемента вместе с его значением, как показано ниже в следующем примере -

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
   print("Value at index = \(index) is \(item)")
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Value at index = 0 is Apple
Value at index = 1 is Amazon
Value at index = 2 is Google

Добавление двух массивов

Вы можете использовать оператор сложения (+), чтобы добавить два массива одного типа, что даст новый массив с комбинацией значений из двух массивов следующим образом:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB
for item in intsC {
   print(item)
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

2
2
1
1
1

Граф собственности

Вы можете использовать только для чтения count свойство массива, чтобы узнать количество элементов в массиве, показанном ниже -

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB

print("Total items in intsA = \(intsA.count)")
print("Total items in intsB = \(intsB.count)")
print("Total items in intsC = \(intsC.count)")

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Total items in intsA = 2
Total items in intsB = 3
Total items in intsC = 5

Пустое свойство

Вы можете использовать только для чтения empty свойство массива, чтобы узнать, пуст ли массив или нет, как показано ниже -

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