2629

13 分钟

#Lua 的表(Table)

Lua 中的表(Table)是一个关联数组,除了 nilNaN 之外的所有 Lua 值都可以做为表的索引。

Lua 中的表(Table)是 Lua 中唯一的数据结构机制,可被用于表示普通数组、序列、符号表、集合、记录、图、树等。

#数组

Lua 中表的索引是从 1 开始的连整数时,该表被视作普通数组。

和绝大多数编程语言不同,Lua 数组的索引从 1 开始。

local array = {10, 20 ,30, 40, 50} -- 定义数组 print(array[1]) -- 10 print(array[2]) -- 20 print(array[3]) -- 30 print(array[4]) -- 40 print(array[5]) -- 50

运行结果:

10 20 30 40 50

使用 # 运算符可以获得数组的长度:

local array = {10, 20 ,30, 40, 50} -- 定义数组 print("array 数组的长度为", #array) -- 获取长度 local array2 = {} -- 定义空表 array2[1] = 10 -- 从索引 1 开始连续添加元素 array2[2] = 20 array2[3] = 30 print("array2 数组的长度为", #array2) -- 获取长度 array2[5] = 50 -- 跳过 array2[4],赋值 array2[5] print("array2 数组的长度为", #array2) -- 获取长度

运行结果:

array 数组的长度为 5 array2 数组的长度为 3 array2 数组的长度为 3
  • array2 跳过了索引 4,赋值了索引 5,在计算长度时被认为长度只有 3

#映射表

除了 nilNaN 之外的所有 Lua 值都可以做为表的索引。

例如:

local map = {} -- 定义空表 map["name"] = "Jerry" -- 索引 "name" 的值为 "Jerry" map["age"] = 9 -- 索引 "age" 的值为 9 print("名字是", map["name"]) print("年龄是", map["age"])

运行结果:

名字是 Jerry 年龄是 9

#表的操作

Lua 的标准库中提供一系列表的常用操作函数:

函数说明
table.concat将表中的元素进行拼接
table.insert向表中插入元素
table.move将表中的元素移动到另一个表
table.pack将一组数据打包成一个表
table.remove从表中删除一个数据
table.sort排序
table.unpack将表中的元素解包

创建于 2025/9/29

更新于 2025/9/29