В този урок ще научите за масиви, създаването му, достъп до стойности на масив и някои често срещани операции в масива.
В предишната статия за Swift Data Types научихме за създаването на променливи / константи на някой тип данни, които могат да съдържат една стойност.
Но какво, ако искаме да съхраняваме множество стойности от един и същи тип данни. Използваме нещо, наречено Array в Swift.
Какво е масив?
Масивът е просто контейнер, който може да съдържа множество данни (стойности) от тип данни в подреден списък, т.е. получавате елементите в същия ред, както сте дефинирали елементите в масива.
Масивът може да съхранява стойности на всякакъв вид данни, например 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
Можете също така да осъществите достъп до елементи на масив, като използвате цикли за вход. Вижте 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()
е описано в долния раздел.
Някои полезни функции и свойства на Array
1. isEmpty
Това свойство определя дали даден масив е празен или не. Той се връща, true
ако масивът не съдържа никаква стойност, в противен случай се връща false
.
Пример 8: Как работи Empty?
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