Lua - 表作为数组
介绍
数组是有序的对象排列,可以是一维数组(包含一行集合)或多维数组(包含多行多列)。
在 Lua 中,数组使用带有整数索引的 table 实现。数组的大小不是固定的,可以根据需求增长,受限于内存。我们应确保数组索引是连续的。
示例 - 数组的创建和操作
在 Lua 中,可以使用构造表达式 {} 创建空数组。然后使用数字 for 循环为数组赋值,如下所示。
main.lua
-- 空数组
array = {}
-- 为数组赋值
for i=1, 10 do
array[i] = i
end
-- 为数组添加一个值
array[11] = 11
-- 获取数组的值
print(array[5])
-- 如果索引不存在,输出将为 nil
print(array[12])
输出
构建并执行上述程序,将产生以下结果 −
5 nil
示例 - 使用负索引的数组创建和操作
默认情况下,数组索引从 1 开始,而不是像 C、Java 语言那样从 0 开始。但由于数组使用 table 实现,我们也可以使用负索引。
main.lua
-- 空数组
array = {}
-- 为数组赋值
for i= -5, 5 do
array[i] = i
end
-- 为数组添加一个值
array[6] = 6
-- 获取数组的值
print(array[-2])
-- 如果索引不存在,输出将为 nil
print(array[-6])
输出
构建并执行上述程序,将产生以下结果 −
-2 nil
示例 - 单语句中创建并初始化数组
我们也可以在创建时初始化数组。在下面的示例中,我们创建了数字数组和字符串数组。
main.lua
-- 数字数组
numbers = { 1, 2, 3, 4, 5 }
-- 名字数组
names = {"Robert", "Julia", "Adam" }
-- 打印索引 3 处的数字
print(numbers[3])
-- 打印索引 2 处名字
print(names[2])
输出
构建并执行上述程序,将产生以下结果 −
3 Julia
示例 - 遍历数组
数组由 table 实现并使用数字索引。因此,最好使用 ipairs() 迭代器来遍历以获取数组的所有值,如下所示:
main.lua
-- 数字数组
numbers = { 11, 12, 13, 14, 15 }
-- 打印所有数字
for index, number in ipairs(numbers) do
print(index, number)
end
-- 名字数组
names = {"Robert", "Julia", "Adam" }
-- 打印所有名字
for index, name in ipairs(names) do
print(index, name)
end
输出
构建并执行上述程序,将产生以下结果 −
1 11 2 12 3 13 4 14 5 15 1 Robert 2 Julia 3 Adam