table.insert 往表里插一个值,表长度自动加一。两种写法:只给值就追加到末尾,给位置就插到指定下标,原位置及后面的元素整体后挪。
local t = {"a", "b"}
table.insert(t, "c") -- 追加到末尾,t = {"a", "b", "c"}
table.insert(t, 2, "x") -- 插到第 2 位,t = {"a", "x", "b", "c"}
print(#t) -- 4
位置参数范围是 1 到 #t+1,超出会直接报 position out of bounds。想在末尾追加就只传两个参数,别写成 table.insert(t, #t+1, v),效果一样但没必要。
循环里收集数据最常用:
local ids = {}
for _, row in ipairs(rows) do
table.insert(ids, row.id) -- 一条条塞进去,顺序和遍历一致
end
它只管连续下标的数组。稀疏表或者拿来当字典用的表,不要用 table.insert 定位插入,直接 t[key] = value 赋值就行。