国际访客建议访问 Primers 编程伙伴 国际版站点 > Lua 教程 > 表(table) 以获得更好的体验。

# 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 = {
    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-11-27 09:38:12 创建于: 2025-11-27 09:38:12