Swift Arrays: Kako ga uporabiti in zakaj? (Z primeri)

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 lastlastnostjo 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 removelastnostjo 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 removeFirstodstranjevanje prvega elementa polja, removeLastodstranjevanje zadnjega elementa polja in removeAllpraznjenje 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 

Zanimive Članki...