Lua 表怎么当作数组用?

文章导读
Previous Quiz Next 介绍 数组是有序的对象排列,可以是一维数组(包含一行集合)或多维数组(包含多行多列)。
📋 目录
  1. 介绍
  2. 示例 - 数组的创建和操作
  3. 示例 - 使用负索引的数组创建和操作
  4. 示例 - 单语句中创建并初始化数组
  5. 示例 - 遍历数组
A A

Lua - 表作为数组



Previous
Quiz
Next

介绍

数组是有序的对象排列,可以是一维数组(包含一行集合)或多维数组(包含多行多列)。

在 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