Aynı türde değişkenlere sahip olduğunda, bunları bir dizide toplayabilirsin. Dizi, öğe türünün []type (örneğin []float) ile belirtildiği bir kapsayıcı türüdür. Diziler kullanışlıdır çünkü öğelere erişmeyi sağlayan kodunu değiştirmeden dizi içinde ne kadar çok öğe depolarsan dizi buna göre ölçeklenir.
Örneğin, oyununda birden fazla oyuncu varsa bir dizi oluşturabilir ve diziyi tüm oyuncularla başlatabilirsin.
Players : []player = array{Player1, Player2}Verse’te, tanımın kullanım şeklini yansıttığı bir model kullanılır. Bir dizi tanımlanırken ve kullanılırken bu model izlenir.
Dize Uzunluğu
Bir dizideki öğelerin sayısını, dizideki Length üyesine erişerek elde edebilirsin. Örneğin, array{10, 20, 30}.Length 3 sonucunu verir.
Dizideki Öğelere Erişim
Bir dizideki öğeler, diziye eklendikleri konumlara uygun şekilde sıralanır ve öğeye dizideki dizini adı verilen bu konumdan erişebilirsin. Örneğin, ilk oyuncuyu almak için Oyuncular dizisine Players[0] ile erişirsin.
Bir dizideki ilk öğenin dizini 0 olur ve sonraki her öğenin dizini sayıca artar. Örneğin, array{10, 20, 30}[0] 10, ve array{10, 20, 30}[1] ise 20'dir.
Dizin | 0 | 1 | 2 |
Öğe | 10 | 20 | 30 |
Bir dizideki son dizin, dizinin uzunluğundan bir eksiktir. Örneğin, array{10, 20, 30}.Length 3'tür ve array{10, 20, 30} içinde 30 için dizin 2'dir.
Bir dizideki bir öğeye erişim başarısız olabilir bir ifadedir ve yalnızca if ifadesi gibi bir başarısızlık bağlamasında kullanılabilir. Örneğin:
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}")Bu kod aşağıdakileri yazdıracaktır:
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 4Diziyi ve Öğelerini Değiştirme
Diziler, Verse’teki diğer tüm değerler gibi sabit değerlerdir. Bir dizi değişkeni tanımlarsan bu işlem, değişkene yeni bir dizi atamana veya öğeleri tek tek değiştirmene imkan tanır.
Örneğin:
# 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}
Bu kod aşağıdakileri yazdıracaktır:
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Çok Boyutlu Diziler
Önceki örneklerde gösterilen dizilerin tümü tek boyutluydu ancak çok boyutlu diziler de oluşturabilirsin. Çok boyutlu diziler, bir tablodaki sütun ve satırlara benzer şekilde her dizinde depolanan başka bir diziye veya dizilere sahiptir.
Örneğin, aşağıdaki kod, aşağıdaki tabloda görselleştirilen iki boyutlu (2D) bir dizi oluşturur:
var Counter : int = 0
Example : [][]int =
for (Row := 0..3):
for(Column := 0..2):
set Counter += 1| Sütun 0 | Sütun 1 | Sütun 2 | |
|---|---|---|---|
Satır 0 | 1 | 2 | 3 |
Satır 1 | 4 | 5 | 6 |
Satır 2 | 7 | 8 | 9 |
Satır 3 | 10 | 11 | 12 |
2D bir dizideki öğelere erişmek için iki dizin kullanman gerekir. Örneğin, Example[0][0] değeri 1, Example[0][1] değeri 2 ve Example[1][0] değeri 4'tür.
Aşağıdaki kod, Örnek 2B dizisinde yinelemek için bir for ifadesinin nasıl kullanılacağını gösterir.
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}]")Bu kod aşağıdakileri yazdıracaktır:
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]
Her satırdaki sütun sayısının sabit olması gerekli değildir.
Örneğin, aşağıdaki kod, aşağıdaki tabloda görselleştirilen iki boyutlu (2D) bir dizi oluşturur. Bu tabloda her satırdaki sütun sayısı, bir önceki satırdakinden fazladır:
Example : [][]int =
for (Row := 0..3):
for(Column := 0..Row):
Row * Column| Sütun 0 | Sütun 1 | Sütun 2 | Sütun 3 | |
|---|---|---|---|---|
Satır 0 | 0 | |||
Satır 1 | 0 | 1 | ||
Satır 2 | 0 | 2 | 4 | |
Satır 3 | 0 | 3 | 6 | 9 |
Kalıcı Tür
Bir dizideki öğelerin türü kalıcıysa dizi kalıcıdır, yani bu değerleri hem modül kapsamına alınmış weak_map değişkenleriyle kullanabilir hem de değerlerini farklı oyun oturumları arasında devam ettirebilirsin. Verse’te kalıcılık hakkında daha ayrıntılı bilgi için Verse’te Kalıcı Veri Kullanımı bölümüne bakabilirsin.