English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Lua 数组

النظام المتكرر هو مجموعة من العناصر التي تكون من نفس نوع البيانات مرتبة بطريقة معينة، يمكن أن يكون أحادي الأبعاد أو متعدد الأبعاد.

يمكن استخدام الأرقام لتمثيل مفتاحي النظام المتكرر بلغة Lua، وعدد العناصر في النظام المتكرر ليس ثابتاً.

العدد الأحادي

العدد الأحادي هو أبسط أنواع الأنظمة المتكررة، وهو له بنية منطقية تكون جدولاً خطياً. يمكن استخدام دورة for لاستخراج عناصر النظام المتكرر، مثل المثال التالي:

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

以上代码执行输出结果为:

nil
Lua
教程

正如你所看到的,我们可以使用整数索引来访问数组元素,如果知道的索引没有值则返回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 值,有利于节省内存空间。