目录
Lua 的 table
库提供了操作表的常用函数,以下是详细说明及示例:
1. table.concat(list [, sep [, i [, j]]])
- 作用:将表
list
中的元素(必须是字符串或数字)连接成一个字符串。 - 参数:
sep
:分隔符(默认无)。i
和j
:起始和结束索引(默认i=1
,j=#list
)。
- 示例:
local t = { "a", "b", "c"} print(table.concat(t)) --> "abc" print(table.concat(t, ",", 2, 3)) --> "b,c"
2. table.insert(list, [pos,] value)
- 作用:在表
list
的pos
位置插入value
。若省略pos
,默认插入末尾。 - 注意:插入会导致后续元素后移。
- 示例:
local t = { 1, 2, 3} table.insert(t, 4) --> t = {1, 2, 3, 4} table.insert(t, 2, 10) --> t = {1, 10, 2, 3, 4}
3. table.move(src, a, b, dest [, dest_pos])
(Lua 5.3+)
- 作用:将表
src
中索引a
到b
的元素复制到目标表dest
的dest_pos
位置(默认起始位置)。 - 返回值:目标表
dest
。 - 示例:
local src = { 10, 20, 30} local dest = { } table.move(src, 1, 3, 1, dest) --> dest = {10, 20, 30}
4. table.pack(...)
(Lua 5.2+)
- 作用:将可变参数打包成一个表,并添加字段
n
表示参数个数。 - 示例:
local t = table.pack("a", "b", "c") print(t.n) --> 3 print(t[2]) --> "b"
5. table.remove(list [, pos])
- 作用:移除表
list
中pos
位置的元素,后续元素前移。若省略pos
,默认移除最后一个元素。 - 返回值:被移除的元素。
- 示例:
local t = { 1, 2, 3} table.remove(t) --> 返回 3,t = {1, 2} table.remove(t, 1) --> 返回 1,t = {2}
6. table.sort(list [, comp])
- 作用:对表
list
进行原地排序,comp
是自定义比较函数(默认升序)。 - 注意:仅对列表部分(连续数字索引)排序。
- 示例:
local t = { 5, 1, 4} table.sort(t) --> t = {1, 4, 5} table.sort(t, function(a, b) return a > b end) --> t = {5, 4, 1}
7. table.unpack(list [, i [, j]])
- 作用:将表
list
中的元素从索引i
到j
解包为多个返回值。默认i=1
,j=#list
。 - 示例:
local t = { 2, 4, 6} print(table.unpack(t)) --> 2, 4, 6 print(math.max(table.unpack(t))) --> 6
总结
- 连接与拆分:
concat
:列表转字符串。unpack
:列表转多个返回值。pack
:参数打包为带n
字段的表。
- 增删元素:
insert
:插入元素。remove
:移除元素。
- 排序与复制:
sort
:排序列表。move
:复制元素到目标表。
- 注意事项:
concat
和sort
仅处理列表(连续数字索引)。insert
和remove
会影响元素位置,可能引发性能问题(大表慎用)。unpack
常用于传递可变参数,如func(table.unpack(t))
。