Lua - tablice

Tablice to uporządkowane rozmieszczenie obiektów, które może być jednowymiarową tablicą zawierającą zbiór wierszy lub wielowymiarową tablicą zawierającą wiele wierszy i kolumn.

W Lua tablice są implementowane przy użyciu indeksowania tabel z liczbami całkowitymi. Rozmiar tablicy nie jest ustalony i może rosnąć w zależności od naszych wymagań, z zastrzeżeniem ograniczeń pamięci.

Tablica jednowymiarowa

Jednowymiarowa tablica może być reprezentowana przy użyciu prostej struktury tabeli i może być inicjowana i odczytywana przy użyciu prostego pliku forpętla. Przykład jest pokazany poniżej.

array = {"Lua", "Tutorial"}

for i = 0, 2 do
   print(array[i])
end

Kiedy uruchomimy powyższy kod, otrzymamy następujące dane wyjściowe.

nil
Lua
Tutorial

Jak widać w powyższym kodzie, gdy próbujemy uzyskać dostęp do elementu w indeksie, którego nie ma w tablicy, zwraca on nil. W Lua indeksowanie zwykle zaczyna się od indeksu 1. Ale możliwe jest również tworzenie obiektów o indeksie 0 i poniżej 0. Tablica używająca indeksów ujemnych jest pokazana poniżej, gdzie inicjalizujemy tablicę za pomocą pętli for .

array = {}

for i= -2, 2 do
   array[i] = i *2
end

for i = -2,2 do
   print(array[i])
end

Kiedy uruchomimy powyższy kod, otrzymamy następujące dane wyjściowe.

-4
-2
0
2
4

Tablica wielowymiarowa

Tablice wielowymiarowe można zaimplementować na dwa sposoby.

  • Tablica tablic
  • Jednowymiarowa tablica poprzez manipulowanie indeksami

Przykład wielowymiarowej tablicy 3,3 pokazano poniżej przy użyciu tablicy tablic.

-- Initializing the array
array = {}

for i=1,3 do
   array[i] = {}
	
   for j=1,3 do
      array[i][j] = i*j
   end
	
end

-- Accessing the array

for i=1,3 do

   for j=1,3 do
      print(array[i][j])
   end
	
end

Kiedy uruchomimy powyższy kod, otrzymamy następujące dane wyjściowe.

1
2
3
2
4
6
3
6
9

Przykład tablicy wielowymiarowej jest pokazany poniżej przy użyciu manipulacji indeksami.

-- Initializing the array

array = {}

maxRows = 3
maxColumns = 3

for row=1,maxRows do

   for col=1,maxColumns do
      array[row*maxColumns +col] = row*col
   end
	
end

-- Accessing the array

for row=1,maxRows do

   for col=1,maxColumns do
      print(array[row*maxColumns +col])
   end
	
end

Kiedy uruchomimy powyższy kod, otrzymamy następujące dane wyjściowe.

1
2
3
2
4
6
3
6
9

Jak widać na powyższym przykładzie, dane są przechowywane w oparciu o indeksy. Możliwe jest rzadkie umieszczanie elementów i tak właśnie działa implementacja macierzy w Lua. Ponieważ nie przechowuje wartości zerowych w Lua, możliwe jest zaoszczędzenie dużej ilości pamięci bez żadnej specjalnej techniki w Lua w porównaniu ze specjalnymi technikami używanymi w innych językach programowania.