У овом упутству ћете научити о низовима, стварању, приступу вредностима низа и неким уобичајеним операцијама у низу.
У претходном чланку Свифт Дата Типес сазнали смо о стварању променљивих / константи неког типа података који могу да садрже једну вредност.
Али, шта ако желимо да сачувамо више вредности истог типа података. У Свифту користимо нешто што се зове Арраи .
Шта је низ?
Низ је једноставно контејнер који може да садржи више података (вредности) типа података на уређеној листи, односно добијате елементе истим редоследом као што сте дефинисали ставке у низу.
Низ може чувати вредности било ког типа података, нпр Int
. String
, Класе итд.
Како прогласити низ у Свифту?
Можете створити празан низ специфицирањем типа података унутар угластих заграда ()
.
Запамтите, тип морате да уврстите у углате заграде, иначе ће га Свифт третирати као нормалан тип података и у њега можете да сместите само једну вредност.
Пример 1: Декларација празног низа
let emptyIntArr:(Int) = () print(emptyIntArr)
Када покренете програм, излаз ће бити:
()
У горњем програму смо прогласили константу емптиИнтАрр која може похранити низ целих бројева и иницијализована са 0 вредности.
ИЛИ
Такође можете дефинисати празан низ као испод:
let emptyIntArr:Array = Array() print(emptyIntArr)
ИЛИ
Будући да је свифт језик за закључивање типова, низ можете да креирате и директно без навођења типа података, али мора да се иницијализује неким вредностима како би компајлер могао да закључи о његовом типу као:
Пример 2: Декларисање низа са неким вредностима
let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr)
Када покренете програм, излаз ће бити:
(1, 2, 3, 4, 5, 6, 7, 8, 9)
У горе наведеном програму прогласили смо константу сомеИнтАрр која може сместити низ Интегер-а без експлицитног навођења типа. Такође, иницијализовали смо низ са вредностима 1, 2, 3, 4, 5, 6, 7, 8, 9 .
Пример 3: Декларација низа који садржи наведени број једне поновљене вредности
Такође можете поновити вредност одређени број пута да бисте формирали низ у Свифту. То се постиже употребом иницијализатора низа са понављањем и бројањем.
let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues)
Када покренете програм, излаз ће бити:
(„Здраво, свет“, „здраво, свет“, „здраво, свет“, „здраво, свет“)
У горе наведеном програму дефинисали смо константу аррВитхРепеатингВалуес која чува низ низа Хелло, Ворлд и понавља исту вредност 4 пута како је наведено у бројању.
Напомена: У Свифту не можете створити низ фиксне дужине као што то радите у другим програмским језицима. Низ фиксне дужине значи да низ не може имати више елемената него што дефинишете током иницијализације.
Како се вредности чувају у низу?
Претпоставимо да имате константу која може да ускладишти низ низова као доле:
нека интАрр = (21, 34, 54, 12)
Сликовни приказ како се вредности чувају у низу може се приказати у наставку:
Сви низови које креирате започињу индексом 0. Први елемент се чува у индексу 0, други елемент у следећем индексу (1) и тако даље.
Како приступити елементима низа у Свифту?
Елементима низа можете приступити користећи синтаксу индекса, тј. Морате да уврстите индекс вредности којој желите да приступите у углате заграде одмах иза имена низа.
Претпоставимо да сте прогласили низ интАрр као горе. Први елемент је интАрр (0), други елемент је интАрр (1) и тако даље.
Пример 4: Приступ елементима низа
let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3))
Када покренете програм, излаз ће бити:
21 34 54 12
Елементима низа такође можете приступити помоћу петљи за улазак. Погледајте петљу Свифт Фор-ин да бисте сазнали више о томе.
Како изменити / додати елементе низа у Свифт-у?
Елементе низа можете модификовати користећи синтаксу индекса и оператор доделе, тј. Морате додати индекс вредности коју желите да ажурирате у углате заграде након имена низа, затим оператора доделе и нове вредности.
Пример 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
Када покренете програм, излаз ће бити:
фатална грешка: индекс ван опсега
Горњи програм даје грешку приликом додељивања новог елемента низу интАрр. То је зато што интАрр није додијелио додатну меморију за индекс 4 и не може похранити дату вриједност.
Да бисмо правилно уметнули нови елемент у низ, користимо append()
методу низа . append()
је описано у одељку у наставку.
Неке корисне уграђене функције и својства низа
1. исЕмпти
Ово својство одређује да ли је низ празан или не. Враћа се true
ако низ не садржи никакву вредност, иначе се враћа false
.
Пример 8: Како функционишеЕмпти?
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)
Када покренете програм, излаз ће бити:
уклоњена вредност је бц ("аб", "цд", "де")
Слично томе, такође можете користити функције попут removeFirst
уклањања првог елемента низа, removeLast
уклањања последњег елемента низа и removeAll
пражњења низа.
6. обрнуто
Ова функција враћа елементе низа у обрнутом редоследу.
Пример 13: Како обрнуто () делује?
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
Ствари које треба запамтити
Док користите синтаксу индекса за приступ елементима низа у Свифту, морате бити сигурни да вредност лежи у индексу, у супротном ћете добити рунтиме рунтиме. Погледајмо ово на примеру:
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