Lua - 多维数组
数组是有序的对象排列,可以是一维数组包含多行集合,或者多维数组包含多行和多列。
在 Lua 中,数组使用整数索引的 table 来实现。数组的大小不是固定的,可以根据需求增长,受限于内存限制。
多维数组可以通过两种方式实现。
- 数组的数组
- 通过操作索引实现的一维数组
示例 - 创建数组
下面是一个 3×3 多维数组的示例,使用数组的数组方式。
main.lua
-- 初始化数组
array = {}
-- 循环从 1 到 3
for i=1,3 do
array[i] = {}
-- 循环从 1 到 3
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
示例 - 创建索引
下面是一个通过操作索引实现的多维数组示例。
main.lua
-- 初始化数组
array = {}
-- 设置最大行数和列数
maxRows = 3
maxColumns = 3
-- 循环从 1 到 maxRows 和 maxColumns
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 值,与其他编程语言中使用的特殊技术相比,无需特殊技巧即可节省大量内存。