表库
TABLE表操作:插入删除、排序、拼接,Lua 唯一的容器 | 本页 5 个接口。登录全站学员账号后:给函数打 ✓ 记录学习进度、写私人备注。
table.concat (list [, sep [, i [, j]]])
📖 用途
把数组 [i, j] 的元素用分隔符 sep 连接成一个字符串(比 .. 循环拼接快得多)。
📥 参数
| 参数 | 说明 |
|---|---|
| list | 字符串/数字数组 |
| sep | 分隔符,默认空 |
| i | 起始,默认 1 |
| j | 结束,默认 #list |
📤 返回值
拼接后的字符串
💻 用法案例
local t = {'a', 'b', 'c'}
print(table.concat(t, '-')) --> a-b-c
print(table.concat({1,2,3}, ',', 2)) --> 2,3
table.insert (list, [pos,] value)
📖 用途
在数组 list 的 pos 位置插入 value(pos 省略时插入到末尾,#list+1),后面的元素顺移。
📥 参数
| 参数 | 说明 |
|---|---|
| list | 数组表 |
| pos | 插入位置(1~#list+1) |
| value | 要插入的值 |
📤 返回值
无
💻 用法案例
local t = {'a', 'c'}
table.insert(t, 'd') --> a c d
table.insert(t, 1, 'b0') --> b0 a c d
table.maxn (table)
📖 用途
返回表中最大的正数键(5.1 提供,5.3 已移除)。对稀疏数组求“长度”用它比 # 稳。
📥 参数
| 参数 | 说明 |
|---|---|
| table | 目标表 |
📤 返回值
最大正数键;没有返回 0
💻 用法案例
local t = {}
t[5] = 'a'
print(table.maxn(t)) --> 5
print(#t) --> 0 (# 对稀疏表不可靠)
table.remove (list [, pos])
📖 用途
删除并返回数组 list 中 pos 位置的元素(pos 省略删最后一个),后面的元素前移。循环删除时记得倒序遍历。
📥 参数
| 参数 | 说明 |
|---|---|
| list | 数组表 |
| pos | 位置,默认 #list |
📤 返回值
被删除的元素
💻 用法案例
local t = {'a', 'b', 'c'}
print(table.remove(t, 2)) --> b
print(table.remove(t)) --> c
-- 倒序删除避免错位
for i = #t, 1, -1 do if t[i] == 'x' then table.remove(t, i) end end
table.sort (list [, comp])
📖 用途
原地对数组升序排序(默认按 < 比较)。可传比较函数 comp(a,b) 返回 true 表示 a 排前面。不稳定排序(相等元素次序不保证)。
📥 参数
| 参数 | 说明 |
|---|---|
| list | 数组表 |
| comp | 比较函数,可选 |
📤 返回值
无(原地排序)
💻 用法案例
local t = {3, 1, 2}
table.sort(t) --> 1 2 3
table.sort(t, function(a, b) return a > b end) --> 3 2 1
local ps = {{n='甲',lv=30},{n='乙',lv=50}}
table.sort(ps, function(a,b) return a.lv > b.lv end) -- 按等级降序Lua 接口说明书 · 996引擎教学资料 · chuan2.cn · 共 136 个接口