Snabba arrays: Hur man använder den och varför? (Med exempel)

I den här handledningen lär du dig om matriser, skapar den, får tillgång till värden för en matris och några vanliga operationer i matrisen.

I den tidigare artikeln om Swift-datatyper lärde vi oss att skapa variabler / konstanter av vissa datatyper som kan innehålla ett enda värde.

Men vad händer om vi vill lagra flera värden av samma datatyp. Vi använder något som heter Array i Swift.

Vad är en matris?

En matris är helt enkelt en behållare som kan innehålla flera data (värden) av en datatyp i en beställd lista, dvs. du får elementen i samma ordning som du definierade objekten i matrisen.

En array kan lagra värden av alla datatyper, t.ex. Int, String, klass etc.

Hur deklarerar jag en array i Swift?

Du kan skapa en tom matris genom att ange datatypen inom hakparenteser ().

Kom ihåg att du måste inkludera typen inom hakparenteser, annars behandlar Swift den som en vanlig datatyp och du kan bara lagra ett enda värde i den.

Exempel 1: Deklarera en tom matris

 let emptyIntArr:(Int) = () print(emptyIntArr) 

När du kör programmet blir resultatet:

 ()

I ovanstående program har vi förklarat en konstant emptyIntArr som kan lagra array med heltal och initialiseras med 0-värden.

ELLER

Du kan också definiera en tom matris enligt nedan:

 let emptyIntArr:Array = Array() print(emptyIntArr) 

ELLER

Eftersom swift är ett typsinferensspråk kan du också skapa array direkt utan att specificera datatypen men måste initieras med vissa värden så att kompilatorn kan härleda sin typ som:

Exempel 2: Deklarera en matris med vissa värden

 let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr) 

När du kör programmet blir resultatet:

 (1, 2, 3, 4, 5, 6, 7, 8, 9)

I ovanstående program har vi deklarerat en konstant someIntArr som kan lagra array med heltal utan att specifikt specificera typen. Vi har också initierat array med 1, 2, 3, 4, 5, 6, 7, 8, 9 värden.

Exempel 3: Deklarera en matris som innehåller det angivna antalet för ett enda upprepat värde

Du kan också upprepa ett värde ett visst antal gånger för att bilda en matris i Swift. Detta görs genom att använda array-initialiseraren med upprepning och räkning.

 let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues) 

När du kör programmet blir resultatet:

 ("Hello, World", "Hello, World", "Hello, World", "Hello, World")

I ovanstående program har vi definierat en konstant arrWithRepeatingValues ​​som lagrar en matris med sträng Hello, World och upprepar samma värde fyra gånger som anges i räkningen.

Obs! I Swift kan du inte skapa en array med fast längd som på andra programmeringsspråk. Matris med fast längdstorlek betyder att matrisen inte kan ha fler element än du definierar under initialiseringen.

Hur lagras värden i matrisen?

Antag att du har en konstant som kan lagra en rad strängar enligt nedan:

 låt intArr = (21, 34, 54, 12)

Den bildliga representationen av hur värden lagras i matrisen kan visas nedan:

Alla matriser du skapar börjar med index 0. Det första elementet lagras i index 0, det andra elementet i nästa index (1) och så vidare.

Hur får jag tillgång till arrayelement i Swift?

Du kan komma åt element i en array genom att använda subscript-syntax, dvs Du måste inkludera index för det värde du vill komma åt inom hakparenteser omedelbart efter namnet på arrayen.

Antag att du förklarade en array intArr som ovan. Det första elementet är intArr (0), det andra elementet är intArr (1) och så vidare.

Exempel 4: Åtkomst till element i en matris

 let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3)) 

När du kör programmet blir resultatet:

 21 34 54 12 

Du kan också komma åt element i en matris med hjälp av in-loopar. Se Swift For-in-slinga för att lära dig mer om det.

Hur man ändrar / lägger till arrayelement i Swift?

Du kan ändra element i en matris med hjälp av subscript-syntax och tilldelningsoperatör, dvs du måste inkludera index för det värde du vill uppdatera inom hakparenteser efter namnet på matrisen följt av tilldelningsoperatören och nytt värde.

Exempel 5: Modifiera element i en matris

 var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr) 

När du kör programmet blir resultatet:

 (12, 42, 45, 21)

Du kan också ändra alla element i arrayen med nya värden enligt nedan:

Exempel 6: Ändra en matris som helhet

 var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr) 

När du kör programmet blir resultatet:

 (1, 2, 3)

För att lägga till ett nytt element i en befintlig matris kan du dock inte använda prenumerationssyntaxen. Om du gör det får du ett fel. Du kan inte göra något så här:

Exempel 7: Lägga till ett nytt element i en matris med hjälp av prenumerationssyntax (fungerar inte)

 var intArr = (21, 34, 54, 12) intArr(4) = 10 

När du kör programmet blir resultatet:

 dödligt fel: Index utanför området

Ovanstående program ger ett fel vid tilldelning av ett nytt element till en array intArr. Detta beror på att intArr inte har tilldelat extra minne för index 4 och inte kan lagra det angivna värdet.

För att korrekt infoga ett nytt element i en matris använder vi matrisens append()metod. append()beskrivs i avsnittet nedan.

Några hjälpsamma inbyggda Array-funktioner och egenskaper

1. är tom

Den här egenskapen avgör om en matris är tom eller inte. Den returneras trueom en matris inte innehåller något värde som annars returneras false.

Exempel 8: Hur fungerar Empty?

 let intArr = (21, 34, 54, 12) print(intArr.isEmpty) 

När du kör programmet blir resultatet:

 falsk

2. först

Den här egenskapen används för att komma åt det första elementet i en matris.

Exempel 9: Hur fungerar först?

 let intArr = (21, 34, 54, 12) print(intArr.first) 

När du kör programmet blir resultatet:

 Valfritt (21)

På samma sätt kan du använda lastegenskapen för att komma åt det sista elementet i en matris.

3. bifoga

Append-funktionen används för att infoga / lägga till element i slutet av arrayen.

Exempel 10: Hur fungerar append?

 var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr) 

När du kör programmet blir resultatet:

 (21, 34, 54, 12, 32)

Du kan också lägga till innehållet i en matris till en annan matris som:

 var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr) 

När du kör programmet blir resultatet:

 (1, 2, 3, 4, 5, 6, 7, 8)

4. sätt in

Denna funktion används för att infoga / lägga till element vid specifikt index i matrisen.

Exempel 11: Hur fungerar insats?

 var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr) 

När du kör programmet blir resultatet:

 (21, 22, 34, 54, 12)

På samma sätt kan du också använda removeegenskapen för att ta bort element vid angivet index.

5. ta bort

Denna funktion tar bort och returnerar det angivna värdet vid den angivna positionen från matrisen.

Exempel 12: Hur tar bort fungerar?

 var strArr = ("ab","bc","cd","de") let removedVal = strArr.remove(at: 1) print("removed value is (removedVal)") print(strArr) 

När du kör programmet blir resultatet:

 borttaget värde är bc ("ab", "cd", "de") 

På samma sätt kan du också använda funktioner som removeFirstatt ta bort det första elementet i en array, removeLastta bort det sista elementet i en array och removeAllatt tömma en array.

6. omvänd

Denna funktion returnerar elementen i matrisen i omvänd ordning.

Exempel 13: Hur fungerar reversed ()?

 var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr) 

När du kör programmet blir resultatet:

 (24, 23, 22, 21)

7. räkna

Den här egenskapen returnerar det totala antalet element i en matris.

Exempel 14: räkna

 let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count) 

När du kör programmet blir resultatet:

 4

Saker att komma ihåg

När du använder prenumerationssyntax för att komma åt element i en array i Swift, måste du vara säker på att värdet ligger i indexet, annars får du en runtime-krasch. Låt oss se detta i exempel:

 let intArr = (21, 34, 54, 12) print(intArr(-1)) 

När du kör programmet blir resultatet:

 dödligt fel: Index utanför området

I ovanstående program finns inget värde i indexet -1 . Så när du försöker komma åt värdet i indexet får du en runtime-krasch.

För att förhindra detta, hitta först indexet för elementet du försöker ta bort. Ta sedan bort elementet i indexet enligt nedan:

 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ör programmet blir resultatet:

 hittade index 34 

Intressanta artiklar...