Lua數組

數組是有序的對象的裝置,它可以是包含含有多個行和列的行或多維陣列的集合的單個二維數組。

在Lua中,數組是使用索引表與整數實現的。數組的大小是不固定的,它可以增長基於我們需要受存儲器限制。

一維數組

一維數組可以用一個簡單的表結構來表示,可以初始化,使用一個簡單的for循環讀取。如下例子所示。

array = {"Lua", "Tutorial"} for i= 0, 2 do print(array[i]) end

當我們運行上面的代碼之後,將得到下面的輸出。

nil
Lua
Tutorial

正如在上面的代碼中看到,當我們試圖訪問索引中是不存在的數組中的元素,則返回nil。在Lua索引通常開始於索引1,但有可能在索引0和小於0,以及創建對象。顯示使用負索引數組下面我們初始化使用for循環數組。

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

當我們運行上面的代碼之後,將得到下面的輸出。

-4
-2
0
2
4

多維數組

多維數組可以用兩種方式來實現。

  • 數組的數組
  • 一維數組通過控制索引

對於3,3多維陣列如下所示使用數組的數組的例子。

-- 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

當我們運行上面的代碼之後,將得到下面的輸出。

1
2
3
2
4
6
3
6
9

對於3,3多維陣列的例子如下所示使用操作索引。

-- 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

當我們運行上面的代碼之後,將得到下面的輸出。

1
2
3
2
4
6
3
6
9

正如在上面的例子中看到的,數據是基於索引儲存的。也能夠將元素以稀疏的方式,它是一個矩陣的工作方式lua的實現。因爲它不保存在Lua零值,就可以節省大量的內存,在Lua中任何特殊的技術相比其他編程語言中使用特殊技術。