Lua 數組


數組,就是相同資料型別的元素依一定順序排列的集合,可以是一維數組和多維數組。

Lua 陣列的索引鍵值可以使用整數表示,陣列的大小不是固定的。


一維數組

一維數組是最簡單的數組,其邏輯結構是線性表。一維數組可以用for循環出數組中的元素,如下實例:

array = {"Lua", "Tutorial"}

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

以上程式碼執行輸出結果為:

nil
Lua
Tutorial


如你所看到的,我們可以使用整數索引來存取數組元素,如果知道的索引沒有值則傳回nil。


在 Lua 索引值是以 1 為起始,但你也可以指定 0 開始。

除此外我們還可以以負數為數組索引值:

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

多維數組

###########################多維數組即數組中包含數組或一維數組的索引鍵對應一個數組。 ######以下是一個三行三列的陣列多維數組:###
-- 初始化数组
array = {}
for i=1,3 do
   array[i] = {}
      for j=1,3 do
         array[i][j] = i*j
      end
end

-- 访问数组
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
###不同索引鍵的三行三列陣列多維數組:###
-- 初始化数组
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
   for col=1,maxColumns do
      array[row*maxColumns +col] = row*col
   end
end

-- 访问数组
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
###如你所看到的,以上的實例中,陣列設定了指定的索引值,這樣可以避免出現nil 值,有利於節省記憶體空間。 ######