V tej vadnici boste izvedeli več o nizih, jih ustvarili, dostopali do vrednosti matrike in nekatere pogoste operacije v matriki.
V prejšnjem članku Swift Data Types smo spoznali ustvarjanje spremenljivk / konstant nekaterih podatkovnih vrst, ki lahko vsebujejo eno vrednost.
Kaj pa, če želimo shraniti več vrednosti istega podatkovnega tipa. V Swiftu uporabljamo nekaj, kar se imenuje Array .
Kaj je matrika?
Matrika je preprosto vsebnik, ki lahko vsebuje več podatkov (vrednosti) podatkovnega tipa na urejenem seznamu, tj. Elemente dobite v enakem vrstnem redu, kot ste definirali elemente v matriki.
Polje lahko shrani vrednosti katerega koli podatkovnega tipa, npr Int
. String
, Razreda itd.
Kako razglasiti matriko v Swiftu?
Prazno matriko lahko ustvarite tako, da v oglatih oklepajih določite vrsto podatkov ()
.
Ne pozabite, da morate tip vključiti v oglate oklepaje, sicer ga bo Swift obravnaval kot običajen podatkovni tip in vanj lahko shranite samo eno vrednost.
Primer 1: prijava praznega polja
let emptyIntArr:(Int) = () print(emptyIntArr)
Ko zaženete program, bo rezultat:
()
V zgornjem programu smo razglasili konstanto emptyIntArr, ki lahko shrani celo število in inicializirano z 0 vrednostmi.
ALI
Določite lahko tudi prazno polje, kot spodaj:
let emptyIntArr:Array = Array() print(emptyIntArr)
ALI
Ker je swift jezik za sklepanje o tipih, lahko tudi matriko ustvarite neposredno, ne da bi določili vrsto podatkov, vendar jo morate inicializirati z nekaterimi vrednostmi, tako da lahko prevajalnik izbere njen tip kot:
Primer 2: prijava matrike z nekaterimi vrednostmi
let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr)
Ko zaženete program, bo rezultat:
(1, 2, 3, 4, 5, 6, 7, 8, 9)
V zgornjem programu smo razglasili konstanto someIntArr, ki lahko shrani matriko Integer, ne da bi izrecno določila vrsto. Prav tako smo inicializirali matriko z vrednostmi 1, 2, 3, 4, 5, 6, 7, 8, 9 .
Primer 3: prijava matrike, ki vsebuje določeno število posamezne ponovljene vrednosti
Vrednost lahko ponovite tudi določeno število krat, da v Swiftu oblikujete matriko. To se naredi z uporabo inicializatorja matrike s ponavljanjem in štetjem.
let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues)
Ko zaženete program, bo rezultat:
("Pozdravljen, svet", "Pozdravljen, svet", "Pozdravljen, svet", "Pozdravljen, svet")
V zgornjem programu smo definirali konstanto arrWithRepeatingValues, ki shrani niz nizov Hello, World in 4-krat ponovi isto vrednost, kot je določeno pri štetju.
Opomba: V programu Swift ne morete ustvariti polja s fiksno dolžino kot v drugih programskih jezikih. Polje s fiksno dolžino pomeni, da polje ne more imeti več elementov, kot ste jih določili med inicializacijo.
Kako so vrednosti shranjene v matriki?
Recimo, da imate konstanto, v katero lahko shranite niz nizov, kot je prikazano spodaj:
naj intArr = (21, 34, 54, 12)
Slikovni prikaz shranjevanja vrednosti v matriki je prikazan spodaj:
Vsi nizi, ki jih ustvarite, se začnejo z indeksom 0. Prvi element je shranjen v indeksu 0, drugi element v naslednjem indeksu (1) itd.
Kako dostopati do elementov matrike v Swiftu?
Do elementov matrike lahko dostopate s sintakso podpisa, tj. V oglate oklepaje morate vključiti indeks vrednosti, do katere želite dostopati, takoj za imenom polja.
Denimo, da ste razglasili matriko intArr kot zgoraj. Prvi element je intArr (0), drugi element je intArr (1) itd.
Primer 4: Dostop do elementov polja
let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3))
Ko zaženete program, bo rezultat:
21 34 54 12
Do elementov matrike lahko dostopate tudi z zankami za vnos. Če želite izvedeti več o tem, glejte zanko Swift For-in.
Kako spremeniti / dodati elemente matrike v Swiftu?
Elemente polja lahko spreminjate z uporabo sintakse in operatorja dodelitve, tj. Indeks vrednosti, ki jo želite posodobiti, morate vključiti v oglate oklepaje za imenom polja, ki mu sledi operator dodelitve in nova vrednost.
Primer 5: Spreminjanje elementov polja
var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr)
Ko zaženete program, bo rezultat:
(12, 42, 45, 21)
Vse elemente polja lahko spremenite tudi z novimi vrednostmi, kot je prikazano spodaj:
Primer 6: Spreminjanje matrike kot celote
var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr)
Ko zaženete program, bo rezultat:
(1, 2, 3)
Če želite obstoječemu polju dodati nov element, ne morete uporabiti sintakse podpisa. V tem primeru boste na koncu imeli napako. Ne morete storiti česa takega:
Primer 7: Dodajanje novega elementa v matriko s sintakso podpisa (ne deluje)
var intArr = (21, 34, 54, 12) intArr(4) = 10
Ko zaženete program, bo rezultat:
usodna napaka: indeks izven dosega
Zgornji program daje napako pri dodeljevanju novega elementa matriki intArr. To je zato, ker intArr ni dodelil dodatnega pomnilnika za indeks 4 in ne more shraniti dane vrednosti.
Za pravilno vstavljanje novega elementa v matriko uporabimo append()
metodo matrike . append()
je opisano v spodnjem poglavju.
Nekaj koristnih vgrajenih funkcij in lastnosti array
1. isEmpty
Ta lastnost določa, ali je polje prazno ali ne. Vrne se, true
če matrika ne vsebuje nobene vrednosti, sicer se vrne false
.
Primer 8: Kako deluje Empty?
let intArr = (21, 34, 54, 12) print(intArr.isEmpty)
Ko zaženete program, bo rezultat:
napačno
2. najprej
Ta lastnost se uporablja za dostop do prvega elementa polja.
Primer 9: Kako najprej deluje?
let intArr = (21, 34, 54, 12) print(intArr.first)
Ko zaženete program, bo rezultat:
Neobvezno (21)
Podobno lahko z last
lastnostjo dostopate do zadnjega elementa polja.
3. priloži
Funkcija append se uporablja za vstavljanje / dodajanje elementa na koncu polja.
Primer 10: Kako deluje dodatek?
var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr)
Ko zaženete program, bo rezultat:
(21, 34, 54, 12, 32)
Vsebino enega polja lahko dodate tudi drugemu kot:
var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr)
Ko zaženete program, bo rezultat:
(1, 2, 3, 4, 5, 6, 7, 8)
4. vstavite
Ta funkcija se uporablja za vstavljanje / dodajanje elementa na določen indeks polja.
Primer 11: Kako deluje vložek?
var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr)
Ko zaženete program, bo rezultat:
(21, 22, 34, 54, 12)
Podobno lahko tudi z remove
lastnostjo odstranite element v določenem indeksu.
5. odstranite
Ta funkcija iz polja odstrani in vrne vrednost, določeno na določenem položaju.
Primer 12: Kako odstranjevanje deluje?
var strArr = ("ab","bc","cd","de") let removedVal = strArr.remove(at: 1) print("removed value is (removedVal)") print(strArr)
Ko zaženete program, bo rezultat:
odstranjena vrednost je bc ("ab", "cd", "de")
Podobno lahko uporabite tudi funkcije, kot so removeFirst
odstranjevanje prvega elementa polja, removeLast
odstranjevanje zadnjega elementa polja in removeAll
praznjenje polja.
6. obrnjeno
Ta funkcija vrne elemente polja v obratnem vrstnem redu.
Primer 13: Kako deluje obratno ()?
var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr)
Ko zaženete program, bo rezultat:
(24, 23, 22, 21)
7. štetje
Ta lastnost vrne skupno število elementov v matriki.
Primer 14: štetje
let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count)
Ko zaženete program, bo rezultat:
4.
Stvari, ki si jih je treba zapomniti
Medtem ko uporabljate sintakso podpisov za dostop do elementov polja v Swiftu, morate biti prepričani, da je vrednost v indeksu, sicer boste imeli runtime runtime. Poglejmo to na primeru:
let intArr = (21, 34, 54, 12) print(intArr(-1))
Ko zaženete program, bo rezultat:
usodna napaka: indeks izven dosega
V zgornjem programu v indeksu -1 ni vrednosti . Torej, ko poskušate dostopati do vrednosti v indeksu, boste dobili runtime runtime.
Da bi to preprečili, najprej poiščite indeks elementa, ki ga želite odstraniti. In nato odstranite element v indeksu, kot je prikazano spodaj:
var intArr = (21, 34, 54, 12) if let index = intArr.index(of: 34) ( print("found index") let val = intArr.remove(at: index) print(val) )
Ko zaženete program, bo rezultat:
najdeni indeks 34