Wenn du variables vom gleichen type hast, kannst du sie in einem Array sammeln. Ein Array ist ein container type, bei dem du den Typ der Elemente mit []type angibst, zum Beispiel []float. Ein Array ist nützlich, weil es sich auf beliebig viele Elemente skalieren lässt, ohne dass du für den Zugriff auf die Elemente deinen Code ändern musst.
Wenn du zum Beispiel mehrere Spieler in deinem Spiel hast, kannst du einen Array erstellen und sie mit allen Spielern initialize.
Players : []player = array{Player1, Player2}In Verse hat ein Muster, bei dem sich der Gebrauch in der Definition widerspiegelt. Die Definition eines Arrays und dessen Verwendung folgt diesem Muster.
Array-Länge
Du kannst die Anzahl der Elemente in einem Array abrufen, indem du auf das member Länge des Arrays zugreifst. Zum Beispiel gibt array{10, 20, 30}.Length 3 zurück.
Auf Elemente in einem Array zugreifen
Die Elemente in einem Array werden an der gleichen Stelle im Array angeordnet, an der du sie eingefügt hast, und du kannst auf das Element an dieser Stelle, die index genannt wird, im Array zugreifen. Um zum Beispiel den ersten Spieler zu finden, greifst du mit Players[0] auf das Array des Spielers zu.
Das erste Element in einem Array hat einen Index von 0 und mit jedem weiteren Element erhöht sich die Zahl der Indizes. Zum Beispiel ist array{10, 20, 30}[0] 10 und array{10, 20, 30}[1] ist 20.
Index | 0 | 1 | 2 |
Element | 10 | 20 | 30 |
Der letzte Index in einem Array ist um eins kleiner als die Länge des Arrays. Zum Beispiel ist array{10, 20, 30}.Length 3 und der Index für 30 in array{10, 20, 30} ist 2.
Der Zugriff auf ein Element in einem Array ist ein failable expression und kann nur in einem Fehlerkontext verwendet werden, z. B. in einem if-Ausdruck. Beispiel:
ExampleArray : []int = array{10, 20, 30, 40, 50}
for (Index := 0..ExampleArray.Length - 1):
if (Element := ExampleArray[Index]):
Print("{Element} in ExampleArray at index {Index}")Dieser Code wird gedruckt:
10 in ExampleArray at index 0
20 in ExampleArray at index 1
30 in ExampleArray at index 2
40 in ExampleArray at index 3
50 in ExampleArray at index 4Ändern eines Arrays und seiner Elemente
Matrizen sind, wie alle anderen values in Verse immutable. Wenn du eine Array-Variable definierst, kannst du der Variablen ein neues Array zuweisen oder einzelne Elemente verändern.
Beispiel:
# Array1 is an array of integers
Array1 : []int = array{10, 11, 12}
# Array2 is an array variable of integers
var Array2 : []int = array{20, 21, 22}
# we concatenate Array1, Array2, and a new array of integers
# and assign that to the Array2 variable
set Array2 = Array1 + Array2 + array{30, 31}
Dieser Code wird gedruckt:
10 at index 0
77 at index 1
12 at index 2
20 at index 3
21 at index 4
22 at index 5
30 at index 6
31 at index 7Mehrdimensionale Arrays
Die Arrays in den vorherigen Beispielen waren alle eindimensional, aber du kannst auch mehrdimensionale Arrays erstellen. Mehrdimensionale Arrays haben an jedem Index ein anderes Array oder Arrays gespeichert, ähnlich wie Spalten und Zeilen in einer Tabelle.
Zum Beispiel erzeugt der folgende Code ein zweidimensionales (2D) Array, die in der folgenden Tabelle dargestellt wird:
var Counter : int = 0
Example : [][]int =
for (Row := 0..3):
for(Column := 0..2):
set Counter += 1| Spalte 0 | Spalte 1 | Spalte 2 | |
|---|---|---|---|
Zeile 0 | 1 | 2 | 3 |
Zeile 1 | 4 | 5 | 6 |
Zeile 2 | 7 | 8 | 9 |
Zeile 3 | 10 | 11 | 12 |
Um auf Elemente in einem 2D-Array zuzugreifen, musst du zwei Indizes verwenden. Zum Beispiel ist Example[0][0] 1, Example[0][1] ist 2, und Example[1][0] ist 4.
Der folgende Code zeigt, wie ein for-Ausdruck verwendet wird, um das 2D-Array Example zu iterieren.
if (NumberOfColumns : int = Example[0].Length):
for(Row := 0..Example.Length-1, Column := 0..NumberOfColumns):
if (Element := Example[Row][Column]):
Print("{Element} at index [{Row}][{Column}]")Dieser Code wird gedruckt:
1 at index [0][0]
2 at index [0][1]
3 at index [0][2]
4 at index [1][0]
5 at index [1][1]
6 at index [1][2]
7 at index [2][0]
8 at index [2][1]
9 at index [2][2]
10 at index [3][0]
Die Anzahl der Spalten in jeder Zeile muss nicht konstant sein.
Zum Beispiel erzeugt folgender Code ein zweidimensionales (2D)-Array, das in der folgenden Tabelle dargestellt ist, in der die Anzahl der Spalten in jeder Zeile größer ist als in der vorherigen Zeile:
Example : [][]int =
for (Row := 0..3):
for(Column := 0..Row):
Row * Column| Spalte 0 | Spalte 1 | Spalte 2 | Spalte 3 | |
|---|---|---|---|---|
Zeile 0 | 0 | |||
Zeile 1 | 0 | 1 | ||
Zeile 2 | 0 | 2 | 4 | |
Zeile 3 | 0 | 3 | 6 | 9 |
Dauerhafter Typ
Ein Array ist dauerhaft, wenn der Typ der Elemente im Array dauerhaft ist, was bedeutet, dass du sie in deiner modulbereichsbezogenen Variable weak_map verwenden kannst und ihre Werte dann über Spielsitzungen hinweg erhalten bleiben. Weitere Details zur Persistenz in Verse findest du unter Verwenden dauerhafter Daten in Verse.