Lua中table函数使用详解

Lua 的 table 库提供了操作表的常用函数,以下是详细说明及示例:


1. table.concat(list [, sep [, i [, j]]])

  • 作用:将表 list 中的元素(必须是字符串或数字)连接成一个字符串。
  • 参数
    • sep:分隔符(默认无)。
    • ij:起始和结束索引(默认 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)

  • 作用:在表 listpos 位置插入 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 中索引 ab 的元素复制到目标表 destdest_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])

  • 作用:移除表 listpos 位置的元素,后续元素前移。若省略 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 中的元素从索引 ij 解包为多个返回值。默认 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:复制元素到目标表。
  • 注意事项
    • concatsort 仅处理列表(连续数字索引)。
    • insertremove 会影响元素位置,可能引发性能问题(大表慎用)。
    • unpack 常用于传递可变参数,如 func(table.unpack(t))

猜你喜欢

转载自blog.csdn.net/qq_44653106/article/details/146501720
今日推荐