數(shù)組,就是相同數(shù)據(jù)類型的元素按一定順序排列的集合,可以是一維數(shù)組和多維數(shù)組。
Lua 數(shù)組的索引鍵值可以使用整數(shù)表示,數(shù)組的大小不是固定的。
一維數(shù)組是最簡單的數(shù)組,其邏輯結構是線性表。一維數(shù)組可以用for循環(huán)出數(shù)組中的元素,如下示例:
array = {"Lua", "Tutorial"} for i= 0, 2 do print(array[i]) end
以上代碼執(zhí)行輸出結果為:
nil Lua Tutorial
正如你所看到的,我們可以使用整數(shù)索引來訪問數(shù)組元素,如果知道的索引沒有值則返回nil。
在 Lua 索引值是以 1 為起始,但你也可以指定 0 開始。
除此外我們還可以以負數(shù)為數(shù)組索引值:
array = {} for i= -2, 2 do array[i] = i *2 end for i = -2,2 do print(array[i]) end
以上代碼執(zhí)行輸出結果為:
-4 -2 0 2 4
多維數(shù)組即數(shù)組中包含數(shù)組或一維數(shù)組的索引鍵對應一個數(shù)組。
以下是一個三行三列的陣列多維數(shù)組:
-- 初始化數(shù)組 array = {} for i=1,3 do array[i] = {} for j=1,3 do array[i][j] = i*j end end -- 訪問數(shù)組 for i=1,3 do for j=1,3 do print(array[i][j]) end end
以上代碼執(zhí)行輸出結果為:
1 2 3 2 4 6 3 6 9
不同索引鍵的三行三列陣列多維數(shù)組:
-- 初始化數(shù)組 array = {} maxRows = 3 maxColumns = 3 for row=1,maxRows do for col=1,maxColumns do array[row*maxColumns +col] = row*col end end -- 訪問數(shù)組 for row=1,maxRows do for col=1,maxColumns do print(array[row*maxColumns +col]) end end
以上代碼執(zhí)行輸出結果為:
1 2 3 2 4 6 3 6 9
正如你所看到的,以上的示例中,數(shù)組設定了指定的索引值,這樣可以避免出現(xiàn) nil 值,有利于節(jié)省內存空間。