Quando hai variabili dello stesso tipo, puoi raccoglierle in un array. Un array è un tipo di contenitore in cui si specifica il tipo degli elementi con []type
, ad esempio []float
. Un array è utile perché viene ridimensionato in base al numero di elementi memorizzati in esso contenuti senza modificare il codice per l'accesso agli elementi.
Ad esempio, se hai più giocatori nel tuo gioco, puoi creare un array e inizializzarlo con tutti i giocatori.
Players : []player = array{Player1, Player2}

Lunghezza dell'array
Puoi ottenere il numero di elementi in un array accedendo al membro Length
sull'array. Ad esempio, array{10, 20, 30}.Length
restituisce 3.
Accesso agli elementi di un array
Gli elementi in un array sono ordinati nella stessa posizione nell'array in cui sono stati inseriti ed è possibile accedere all'elemento in tale posizione, chiamata indice, nell'array. Ad esempio, per ottenere il primo giocatore, è necessario accedere all'array Giocatori con Players[0]
.
Il primo elemento di un array ha un indice pari a 0 e l'indice di ogni elemento successivo aumenta di numero. Ad esempio, array{10, 20, 30}[0]
è 10 e array{10, 20, 30}[1]
è 20.
Indice | 0 | 1 | 2 |
Elemento | 10 | 20 | 30 |
L'ultimo indice in un array è inferiore alla lunghezza dell'array. Ad esempio, array{10, 20, 30}.Length
è 3 e l'indice per 30 in array{10, 20, 30}
è 2.
L'accesso a un elemento in un array è un'espressione fallibile e si può utilizzare soltanto in un contesto di fallimento, ad esempio un'espressione if
. Ad esempio:
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}")
Il codice stamperà:
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
Modifica di un array e dei suoi elementi
Gli array, come tutti gli altri valori in Verse, sono elementi non modificabili. Se si definisce una variabile di array, è possibile assegnare un nuovo array alla variabile o modificare singoli elementi.
Ad esempio:
# Array1 è un array di numeri interi
Array1 : []int = array{10, 11, 12}
# Array2 è una variabile di array di numeri interi
var Array2 : []int = array{20, 21, 22}
# concateniamo Array1, Array2 e un nuovo array di numeri interi
# e lo assegniamo alla variabile Array2
set Array2 = Array1 + Array2 + array{30, 31}
# assegniamo il numero intero 77 all'indice 1 di Array2
if (set Array2[1] = 77) {}
for (Index := 0..Array2.Length - 1):
if (Element := Array2[Index]):
Print("{Element} at index {Index}")
Il codice stamperà:
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 7
Array multidimensionali
Gli array negli esempi precedenti erano tutti unidimensionali, ma è anche possibile creare array multidimensionali. Gli array multidimensionali dispongono di un altro array, o più array, memorizzato in ogni indice, simile a colonne e righe in una tabella.
Ad esempio, il codice seguente produce un array bidimensionale (2D), visualizzato nella tabella seguente:
var Counter : int = 0
Example : [][]int =
for (Row := 0..3):
for(Column := 0..2):
set Counter += 1
Colonna 0 | Colonna 1 | Colonna 2 | |
---|---|---|---|
Riga 0 | 1 | 2 | 3 |
Riga 1 | 4 | 5 | 6 |
Riga 2 | 7 | 8 | 9 |
Riga 3 | 10 | 11 | 12 |
Per accedere agli elementi in un array 2D, è necessario utilizzare due indici. Ad esempio, Example[0][0]
è 1, Example[0][1]
è 2 e Example[1][0]
è 4.
Nel codice riportato di seguito viene illustrato come utilizzare un'espressione for
per eseguire l'iterazione nell'array 2D Example
.
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}]")
Il codice stamperà:
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]
11 at index [3][1]
12 at index [3][2]
Non è necessario che il numero di colonne in ogni riga sia costante.
Ad esempio, il codice seguente produce un array bidimensionale (2D), visualizzato nella tabella seguente, in cui il numero di colonne in ogni riga è maggiore della riga precedente:
Example : [][]int =
for (Row := 0..3):
for(Column := 0..Row):
Row * Column
Colonna 0 | Colonna 1 | Colonna 2 | Colonna 3 | |
---|---|---|---|---|
Riga 0 | 0 | |||
Riga 1 | 0 | 1 | ||
Riga 2 | 0 | 2 | 4 | |
Riga 3 | 0 | 3 | 6 | 9 |