> 技术文档 > Lua(数组)

Lua(数组)


Lua 数组基础概念

Lua 中的数组实际上是用整数索引的 table,是一种特殊形式的表。数组索引通常从 1 开始(Lua 惯例),但也可以从其他值开始。

创建数组

通过表构造器初始化数组:

-- 索引从 1 开始的数组 local arr = {10, 20, 30, \"hello\"} -- 显式指定索引(可自定义起始索引) local arr2 = {[1] = \"a\", [2] = \"b\", [3] = \"c\"} 

访问和修改元素

通过索引直接操作:

print(arr[1]) -- 输出 10 arr[2] = 200 -- 修改第二个元素 arr[5] = 50 -- 新增第五个元素 

遍历数组

使用 ipairsfor 循环:

-- ipairs 遍历(从 1 到连续整数索引结束) for i, v in ipairs(arr) do print(i, v) end -- 数值 for 循环 for i = 1, #arr do print(arr[i]) end 

获取数组长度

# 操作符返回连续整数索引部分的最大索引值

print(#arr) -- 若 arr = {10, 20, nil, 40}, 输出 2(因第三位为 nil) 

多维数组

通过嵌套 table 实现:

local matrix = { {1, 2, 3}, {4, 5, 6} } print(matrix[1][2]) -- 输出 2 

example:

-- 初始化数组array = {}for i=1,3 do array[i] = {} for j=1,3 do array[i][j] = i*j endend-- 访问数组for i=1,3 do for j=1,3 do print(array[i][j]) endend

注意事项

  • 索引从 1 开始:Lua 惯例,但技术上可从任意值开始。
  • 非连续索引:若数组含 nil 空隙,#ipairs 可能不会遍历全部元素。
  • 动态扩展:数组大小无需预先声明,插入新元素会自动扩展。

实用操作示例

插入元素

table.insert(arr, 3, \"new\") -- 在位置 3 插入 \"new\" 

删除元素

table.remove(arr, 2) -- 移除第二个元素 

排序

table.sort(arr) -- 默认升序 table.sort(arr, function(a, b) return a > b end) -- 降序