I denne opplæringen vil du lære om matriser, opprette den, få tilgang til verdiene til en matrise og noen vanlige operasjoner i matrisen.
I den forrige artikkelen om Swift-datatyper lærte vi om å lage variabler / konstanter av en datatype som kan ha en enkelt verdi.
Men hva om vi vil lagre flere verdier av samme datatype. Vi bruker noe som heter Array in Swift.
Hva er en matrise?
En matrise er ganske enkelt en beholder som kan inneholde flere data (verdier) av en datatype i en ordnet liste, dvs. at du får elementene i samme rekkefølge som du definerte elementene i matrisen.
En matrise kan lagre verdier av en hvilken som helst datatype f.eks Int
, String
, klasse etc.
Hvordan erklære jeg en matrise i Swift?
Du kan opprette en tom matrise ved å spesifisere datatypen i parentes ()
.
Husk at du må inkludere typen i firkantede parenteser, ellers behandler Swift den som en vanlig datatype, og du kan bare lagre en enkelt verdi i den.
Eksempel 1: Deklarere en tom matrise
let emptyIntArr:(Int) = () print(emptyIntArr)
Når du kjører programmet, vil utdataene være:
()
I programmet ovenfor har vi erklært en konstant emptyIntArr som kan lagre matrise med heltall og initialisert med 0-verdier.
ELLER
Du kan også definere en tom matrise som nedenfor:
let emptyIntArr:Array = Array() print(emptyIntArr)
ELLER
Siden swift er et typeslutningsspråk, kan du også opprette matrise direkte uten å spesifisere datatypen, men du må initialisere med noen verdier slik at kompilatoren kan utlede typen som:
Eksempel 2: Deklarere en matrise med noen verdier
let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr)
Når du kjører programmet, vil utdataene være:
(1, 2, 3, 4, 5, 6, 7, 8, 9)
I det ovennevnte programmet har vi erklært en konstant someIntArr som kan lagre utvalg av Integer uten å spesifisere typen eksplisitt. Vi har også initialisert matrise med 1, 2, 3, 4, 5, 6, 7, 8, 9 verdier.
Eksempel 3: Deklarere en matrise som inneholder det angitte antallet av en enkelt gjentatt verdi
Du kan også gjenta en verdi et gitt antall ganger for å danne en matrise i Swift. Dette gjøres ved å bruke arrayinitialisereren med gjentakelse og telling.
let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues)
Når du kjører programmet, vil utdataene være:
("Hello, World", "Hello, World", "Hello, World", "Hello, World")
I det ovennevnte programmet har vi definert en konstant arrWithRepeatingValues som lagrer en rekke streng Hello, World og gjentar den samme verdien 4 ganger som spesifisert i tellingen.
Merk: I Swift kan du ikke opprette en rekke størrelser med fast lengde slik du gjør i andre programmeringsspråk. Faste lengdestørrelsesmatriser betyr at matrisen ikke kan ha flere elementer enn du definerer under initialiseringen.
Hvordan lagres verdier i matrisen?
Anta at du har en konstant som kan lagre en rekke strenger som nedenfor:
la intArr = (21, 34, 54, 12)
Den illustrative representasjonen av hvordan verdier lagres i matrisen kan vises nedenfor:
Alle matriser du oppretter starter med indeksen 0. Det første elementet er lagret i indeksen 0, det andre elementet i neste indeks (1) og så videre.
Hvordan få tilgang til matriseelementer i Swift?
Du kan få tilgang til elementer i en matrise ved å bruke subscript-syntaksen, dvs. Du må inkludere indeksen for verdien du vil ha tilgang til, innen firkantede parenteser rett etter navnet på matrisen.
Anta at du erklærte en array intArr som ovenfor. Det første elementet er intArr (0), det andre elementet er intArr (1) og så videre.
Eksempel 4: Få tilgang til elementer i en matrise
let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3))
Når du kjører programmet, vil utdataene være:
21 34 54 12
Du kan også få tilgang til elementer i en matrise ved å bruke for-in-løkker. Se Swift For-in-løkke for å lære mer om det.
Hvordan endre / legge til matriseelementer i Swift?
Du kan endre elementer i en matrise ved å bruke subscript-syntaks og tildelingsoperatør, dvs. du må inkludere indeks for verdien du vil oppdatere i parentes etter navnet på matrisen etterfulgt av tildelingsoperatøren og ny verdi.
Eksempel 5: Endring av elementer i en matrise
var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr)
Når du kjører programmet, vil utdataene være:
(12, 42, 45, 21)
Du kan også endre alle elementene i matrisen med nye verdier som nedenfor:
Eksempel 6: Endre en matrise som en helhet
var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr)
Når du kjører programmet, vil utdataene være:
(1, 2, 3)
Hvis du vil legge til et nytt element i en eksisterende matrise, kan du imidlertid ikke bruke abonnementsyntaks. Hvis du gjør det, får du en feil. Du kan ikke gjøre noe slikt:
Eksempel 7: Legge til et nytt element i en matrise ved hjelp av abonnementsyntaks (Fungerer ikke)
var intArr = (21, 34, 54, 12) intArr(4) = 10
Når du kjører programmet, vil utdataene være:
dødelig feil: Indeks utenfor rekkevidde
Ovennevnte program gir en feil under tildeling av et nytt element til en array intArr. Dette er fordi intArr ikke har tildelt ekstra minne for indeks 4 og ikke kan lagre den gitte verdien.
For å sette inn et nytt element riktig i en matrise bruker vi matrisens append()
metode. append()
er beskrevet i avsnittet nedenfor.
Noen nyttige innebygde Array-funksjoner og -egenskaper
1. er tom
Denne egenskapen avgjør om en matrise er tom eller ikke. Den returnerer true
hvis en matrise ikke inneholder noen verdi som ellers returneres false
.
Eksempel 8: Hvordan fungerer Empty?
let intArr = (21, 34, 54, 12) print(intArr.isEmpty)
Når du kjører programmet, vil utdataene være:
falsk
2. først
Denne egenskapen brukes til å få tilgang til første element i en matrise.
Eksempel 9: Hvordan fungerer først?
let intArr = (21, 34, 54, 12) print(intArr.first)
Når du kjører programmet, vil utdataene være:
Valgfritt (21)
På samme måte kan du bruke last
eiendom for å få tilgang til det siste elementet i en matrise.
3. legge til
Append-funksjonen brukes til å sette inn / legge til element på slutten av matrisen.
Eksempel 10: Hvordan fungerer append?
var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr)
Når du kjører programmet, vil utdataene være:
(21, 34, 54, 12, 32)
Du kan også legge til innholdet i en matrise til en annen matrise som:
var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr)
Når du kjører programmet, vil utdataene være:
(1, 2, 3, 4, 5, 6, 7, 8)
4. sett inn
Denne funksjonen brukes til å sette inn / legge til element ved spesifikk indeks i matrisen.
Eksempel 11: Hvordan fungerer innsats?
var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr)
Når du kjører programmet, vil utdataene være:
(21, 22, 34, 54, 12)
På samme måte kan du også bruke remove
egenskap til å fjerne element ved spesifisert indeks.
5. fjern
Denne funksjonen fjerner og returnerer verdien som er spesifisert på den angitte posisjonen fra matrisen.
Eksempel 12: Hvordan fjern fungerer?
var strArr = ("ab","bc","cd","de") let removedVal = strArr.remove(at: 1) print("removed value is (removedVal)") print(strArr)
Når du kjører programmet, vil utdataene være:
fjernet verdi er bc ("ab", "cd", "de")
På samme måte kan du også bruke funksjoner som removeFirst
å fjerne det første elementet i en matrise, removeLast
å fjerne det siste elementet i en matrise og removeAll
å tømme en matrise.
6. reversert
Denne funksjonen returnerer elementene i matrisen i omvendt rekkefølge.
Eksempel 13: Hvordan reversert () fungerer?
var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr)
Når du kjører programmet, vil utdataene være:
(24, 23, 22, 21)
7. telle
Denne egenskapen returnerer det totale antallet elementer i en matrise.
Eksempel 14: telle
let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count)
Når du kjører programmet, vil utdataene være:
4
Ting å huske
Mens du bruker abonnementsyntaks for å få tilgang til elementer i en matrise i Swift, må du være sikker på at verdien ligger i indeksen, ellers får du en kjøretidskrasj. La oss se dette i eksempel:
let intArr = (21, 34, 54, 12) print(intArr(-1))
Når du kjører programmet, vil utdataene være:
dødelig feil: Indeks utenfor rekkevidde
I programmet ovenfor er det ingen verdi i indeksen -1 . Så når du prøver å få tilgang til verdien i indeksen, vil du få et kjøretidskrasj.
For å forhindre dette, finn først indeksen til elementet du prøver å fjerne. Og fjern deretter elementet ved indeksen som nedenfor:
var intArr = (21, 34, 54, 12) if let index = intArr.index(of: 34) ( print("found index") let val = intArr.remove(at: index) print(val) )
Når du kjører programmet, vil utdataene være:
funnet indeks 34