Lua數組

數組是對象的有序排列,可以是包含行集合的一維數組或包含多個行和列的多維數組。

在Lua中,使用帶整數的索引表實現數組。 數組的大小不固定,它可以根據要求增長,受記憶體限制。

一維數組

一維數組可以使用簡單的表結構表示,並且可以使用for迴圈進行初始化和讀取。 如下例子所示。

array = {"Lua", "Tutorial"}

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

當運行上面的代碼時,將得到以下輸出結果 -

nil
Lua
Tutorial

正如在上面的代碼中所看到的,當嘗試訪問數組中不存在的索引中的元素時,它返回nil值。 在Lua中,索引通常從索引1開始。但是也可以在索引00以下(負數)創建對象。 使用負索引的數組如下所示,使用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 x 3的多維數組的示例。

-- 初始化數組

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

如在上面的示例中所看到的,數據是基於索引存儲的。 可以以稀疏的方式放置元素,這是Lua實現數組的方式。 在Lua中由於它沒有存儲nil值,因此與其他編程語言中使用的特殊技術相比,Lua中可以節省大量記憶體而無需任何特殊技術。


上一篇: Lua字串 下一篇: Lua迭代器