#Lua 的表(Table)
Lua 中的表(Table)是一个关联数组,除了 nil
和 NaN
之外的所有 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
#映射表
除了 nil
和 NaN
之外的所有 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 | 将表中的元素解包 |