I denne vejledning lærer du om arrays, opretter den, får adgang til værdier for en array og nogle almindelige operationer i array.
I den forrige Swift-datatyper-artikel lærte vi om oprettelse af variabler / konstanter af en datatype, der kan indeholde en enkelt værdi.
Men hvad nu hvis vi vil gemme flere værdier af samme datatype. Vi bruger noget, der hedder Array i Swift.
Hvad er en matrix?
En matrix er simpelthen en container, der kan indeholde flere data (værdier) af en datatype i en ordnet liste, dvs. du får elementerne i samme rækkefølge, som du definerede elementerne i arrayet.
Et array kan lagre værdier af enhver datatype fx Int
, String
, klasse etc.
Hvordan erklæres et array i Swift?
Du kan oprette en tom matrix ved at angive datatypen inden for firkantede parenteser ()
.
Husk, du skal medtage typen inden for firkantede parenteser, ellers behandler Swift den som en normal datatype, og du kan kun gemme en enkelt værdi i den.
Eksempel 1: Erklæring om et tomt array
let emptyIntArr:(Int) = () print(emptyIntArr)
Når du kører programmet, vil output være:
()
I ovenstående program har vi deklareret en konstant emptyIntArr, der kan gemme array af heltal og initialiseret med 0-værdier.
ELLER
Du kan også definere et tomt array som nedenfor:
let emptyIntArr:Array = Array() print(emptyIntArr)
ELLER
Da swift er et typeslutningssprog, kan du også oprette matrix direkte uden at specificere datatypen, men skal initialiseres med nogle værdier, så kompilatoren kan udlede dens type som:
Eksempel 2: Erklæring af en matrix med nogle værdier
let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr)
Når du kører programmet, vil output være:
(1, 2, 3, 4, 5, 6, 7, 8, 9)
I ovenstående program har vi erklæret en konstant someIntArr, der kan gemme array af Integer uden at angive typen eksplicit. Vi har også initialiseret array med 1, 2, 3, 4, 5, 6, 7, 8, 9 værdier.
Eksempel 3: Erklæring af en matrix, der indeholder det angivne antal af en enkelt gentagen værdi
Du kan også gentage en værdi et givet antal gange for at danne en matrix i Swift. Dette gøres ved at bruge array-initialiseringen med gentagelse og optælling.
let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues)
Når du kører programmet, vil output være:
("Hello, World", "Hello, World", "Hello, World", "Hello, World")
I ovenstående program har vi defineret en konstant arrWithRepeatingValues, der gemmer en matrix af streng Hello, World og gentager den samme værdi 4 gange som angivet i optællingen.
Bemærk: I Swift kan du ikke oprette matrix med størrelse med fast længde, som du gør på andre programmeringssprog. Fix længde størrelse array betyder, array kan ikke have flere elementer, end du definerer under initialisering.
Hvordan lagres værdier i array?
Antag at du har en konstant, der kan gemme en række strenge som nedenfor:
lad intArr = (21, 34, 54, 12)
Den billedlige gengivelse af, hvordan værdier gemmes i array, kan vises nedenfor:
Alle arrays, du opretter, starter med indekset 0. Det første element gemmes i indekset 0, det andet element i det næste indeks (1) og så videre.
Hvordan får man adgang til array-elementer i Swift?
Du kan få adgang til elementer i et array ved hjælp af subscript-syntaks, dvs. Du skal medtage indeks over den værdi, du vil have adgang til inden for firkantede parenteser umiddelbart efter arrayets navn.
Antag, at du erklærede et array intArr som ovenfor. Det første element er intArr (0), det andet element er intArr (1) og så videre.
Eksempel 4: Adgang til elementer i en matrix
let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3))
Når du kører programmet, vil output være:
21 34 54 12
Du kan også få adgang til elementer i en matrix ved hjælp af in-loops. Se Swift For-in-løkke for at lære mere om det.
Hvordan ændres / tilføjes matrixelementer i Swift?
Du kan ændre elementer i en matrix ved hjælp af subscript-syntaks og tildelingsoperator, dvs. du skal medtage indeks over den værdi, du vil opdatere, inden for firkantede parenteser efter navnet på arrayet efterfulgt af tildelingsoperatøren og den nye værdi.
Eksempel 5: Ændring af elementer i en matrix
var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr)
Når du kører programmet, vil output være:
(12, 42, 45, 21)
Du kan også ændre alle elementerne i arrayet med nye værdier som nedenfor:
Eksempel 6: Ændring af en matrix som helhed
var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr)
Når du kører programmet, vil output være:
(1, 2, 3)
For at tilføje et nyt element til et eksisterende array kan du dog ikke bruge abonnementsyntaxen. Hvis du gør det, får du en fejl. Du kan ikke gøre noget som dette:
Eksempel 7: Tilføjelse af et nyt element i en matrix ved hjælp af abonnementsyntaks (virker ikke)
var intArr = (21, 34, 54, 12) intArr(4) = 10
Når du kører programmet, vil output være:
fatal fejl: Indeks uden for rækkevidde
Ovenstående program giver en fejl under tildeling af et nyt element til en array intArr. Dette skyldes, at intArr ikke har tildelt ekstra hukommelse til indeks 4 og ikke kan gemme den givne værdi.
For korrekt at indsætte et nyt element i en matrix bruger vi matrixens append()
metode. append()
er beskrevet i nedenstående afsnit.
Nogle nyttige indbyggede Array-funktioner og egenskaber
1. er tom
Denne egenskab bestemmer, om en matrix er tom eller ej. Den returnerer, true
hvis en matrix ikke indeholder nogen værdi, ellers returneres false
.
Eksempel 8: Hvordan fungerer Empty?
let intArr = (21, 34, 54, 12) print(intArr.isEmpty)
Når du kører programmet, vil output være:
falsk
2. første
Denne egenskab bruges til at få adgang til det første element i en matrix.
Eksempel 9: Hvordan fungerer det først?
let intArr = (21, 34, 54, 12) print(intArr.first)
Når du kører programmet, vil output være:
Valgfri (21)
På samme måde kan du bruge last
egenskab til at få adgang til det sidste element i en matrix.
3. tilføj
Append-funktionen bruges til at indsætte / tilføje element i slutningen af arrayet.
Eksempel 10: Hvordan fungerer append?
var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr)
Når du kører programmet, vil output være:
(21, 34, 54, 12, 32)
Du kan også føje indholdet af et array til et andet array som:
var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr)
Når du kører programmet, vil output være:
(1, 2, 3, 4, 5, 6, 7, 8)
4. indsæt
Denne funktion bruges til at indsætte / tilføje element i matrixens specifikke indeks.
Eksempel 11: Hvordan indsats fungerer?
var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr)
Når du kører programmet, vil output være:
(21, 22, 34, 54, 12)
På samme måde kan du også bruge remove
egenskab til at fjerne element ved specificeret indeks.
5. fjern
Denne funktion fjerner og returnerer den værdi, der er angivet på den angivne position fra arrayet.
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 kører programmet, vil output være:
fjernet værdi er bc ("ab", "cd", "de")
På samme måde kan du også bruge funktioner som removeFirst
at fjerne det første element i et array, removeLast
at fjerne det sidste element i et array og removeAll
at tømme et array.
6. omvendt
Denne funktion returnerer elementerne i array i omvendt rækkefølge.
Eksempel 13: Hvordan reverseret () fungerer?
var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr)
Når du kører programmet, vil output være:
(24, 23, 22, 21)
7. tælle
Denne egenskab returnerer det samlede antal elementer i en matrix.
Eksempel 14: optælling
let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count)
Når du kører programmet, vil output være:
4
Ting at huske
Mens du bruger abonnementsyntaks til at få adgang til elementer i et array i Swift, skal du være sikker på, at værdien ligger i indekset, ellers får du et runtime-nedbrud. Lad os se dette i eksempel:
let intArr = (21, 34, 54, 12) print(intArr(-1))
Når du kører programmet, vil output være:
fatal fejl: Indeks uden for rækkevidde
I ovenstående program er der ingen værdi i indekset -1 . Så når du prøver at få adgang til værdien i indekset, får du et runtime-nedbrud.
For at forhindre dette skal du først finde indekset for det element, du prøver at fjerne. Og fjern derefter elementet ved indekset 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 kører programmet, vil output være:
fundet indeks 34