Zmienne tego samego typu można gromadzić w tablicy. Tablica to typ kontenera, w którym typ elementów określa się za pomocą zapisu []typ
, na przykład []float
. Tablica jest przydatna, ponieważ skaluje się do dowolnej liczby elementów, które są w niej przechowywane, bez konieczności zmiany kodu dostępu do elementów.
Jeśli na przykład w grze bierze udział wielu graczy, można utworzyć tablicę i zainicjować ją wszystkimi graczami.
Players : []player = array{Player1, Player2}

Długość tablicy
Liczbę elementów w tablicy można uzyskać przez dostęp do elementu członkowskiego Length
w tablicy. Na przykład array{10, 20, 30}.Length
zwraca wartość 3.
Uzyskiwanie dostępu do elementów w tablicy
Elementy w tablicy są przyporządkowane do tej samej pozycji, w jakiej zostały w niej umieszczone. Dostęp do elementu w tablicy można uzyskać, odwołując się do pozycji elementu zwanego indeksem. Na przykład, aby uzyskać dostęp do pierwszego gracza, przejdź do tablicy graczy (Players), wywołując Players[0]
.
Pierwszy element w tablicy ma indeks 0, a indeks każdego kolejnego elementu zwiększa się. Na przykład array{10, 20, 30}[0]
to 10, a array{10, 20, 30}[1]
to 20.
Indeks | 0 | 1 | 2 |
Element | 10 | 20 | 30 |
Ostatni indeks w tablicy jest o jeden mniejszy od długości tablicy. Na przykład array{10, 20, 30}.Length
wynosi 3, a indeks dla 30 w array{10, 20, 30}
to 2.
Uzyskanie dostępu do elementu tablicy jest wyrażeniem zawodnym i można go użyć tylko w kontekście niepowodzenia, takim jak wyrażenie if
. Na przykład:
ExampleArray : []int = array{10, 20, 30, 40, 50}
for (Index := 0..ExampleArray.Length - 1):
if (Element := ExampleArray[Index]):
Print("{Element} w tablicy ExampleArray pod indeksem {Index}")
Ten kod wyświetli się w następujący sposób:
10 w tablicy ExampleArray pod indeksem 0
20 w tablicy ExampleArray pod indeksem 1
30 w tablicy ExampleArray pod indeksem 2
40 w tablicy ExampleArray pod indeksem 3
50 w tablicy ExampleArray pod indeksem 4
Zmiana tablicy i jej elementów
Tablice, podobnie jak wszystkie inne wartości w Verse, są niemodyfikowalne. Jeśli zdefiniujesz zmienną tablicy, pozwoli to na przypisanie nowej tablicy do zmiennej lub zmianę poszczególnych elementów.
Na przykład:
# Array1 jest tablicą liczb całkowitych
Array1 : []int = array{10, 11, 12}
# Array2 jest zmienną tablicy liczb całkowitych
var Array2 : []int = array{20, 21, 22}
# łączymy Array1, Array2 i nową tablicę liczb całkowitych
# i przypisujemy to do zmiennej Array2
set Array2 = Array1 + Array2 + array{30, 31}
# przypisujemy liczbę całkowitą 77 do indeksu 1 Array2
if (set Array2[1] = 77) {}
for (Index := 0..Array2.Length - 1):
if (Element := Array2[Index]):
Print("{Element} pod indeksem {Index}")
Ten kod wyświetli się w następujący sposób:
10 pod indeksem 0
77 pod indeksem 1
12 pod indeksem 2
20 pod indeksem 3
21 pod indeksem 4
22 pod indeksem 5
30 pod indeksem 6
31 pod indeksem 7
Tablice wielowymiarowe
Wszystkie tablice w poprzednich przykładach były jednowymiarowe, ale można też tworzyć tablice wielowymiarowe. Tablice wielowymiarowe mają inną tablicę lub tablice przechowywane w każdym indeksie, co przypomina kolumny i wiersze w tabeli.
Na przykład poniższy kod tworzy tablicę dwuwymiarową (2D), przedstawioną w poniższej tabeli:
var Counter : int = 0
Example : [][]int =
for (Row := 0..3):
for(Column := 0..2):
set Counter += 1
Kolumna 0 | Kolumna 1 | Kolumna 2 | |
---|---|---|---|
Wiersz 0 | 1 | 2 | 3 |
Wiersz 1 | 4 | 5 | 6 |
Wiersz 2 | 7 | 8 | 9 |
Wiersz 3 | 10 | 11 | 12 |
Aby uzyskać dostęp do elementów tablicy 2D, musisz użyć dwóch indeksów. Na przykład Example[0][0]
to 1, Example[0][1]
to 2, a Example[1][0]
to 4.
Poniższy kod pokazuje, jak użyć wyrażenia for
do iteracji po tablicy 2D Example
.
if (NumberOfColumns : int = Example[0].Length):
for(Row := 0..Example.Length-1, Column := 0..NumberOfColumns):
if (Element := Example[Row][Column]):
Print("{Element} pod indeksem [{Row}][{Column}]")
Ten kod wyświetli się w następujący sposób:
1 pod indeksem [0][0]
2 pod indeksem [0][1]
3 pod indeksem [0][2]
4 pod indeksem [1][0]
5 pod indeksem [1][1]
6 pod indeksem [1][2]
7 pod indeksem [2][0]
8 pod indeksem [2][1]
9 pod indeksem [2][2]
10 pod indeksem [3][0]
11 pod indeksem [3][1]
12 pod indeksem [3][2]
Liczba kolumn w każdym wierszu nie musi być stała.
Na przykład poniższy kod tworzy tablicę dwuwymiarową (2D), przedstawioną w poniższej tabeli, w której liczba kolumn w każdym wierszu jest większa niż w poprzednim:
Example : [][]int =
for (Row := 0..3):
for(Column := 0..Row):
Row * Column
Kolumna 0 | Kolumna 1 | Kolumna 2 | Kolumna 3 | |
---|---|---|---|---|
Wiersz 0 | 0 | |||
Wiersz 1 | 0 | 1 | ||
Wiersz 2 | 0 | 2 | 4 | |
Wiersz 3 | 0 | 3 | 6 | 9 |