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 -- 新增第五個元素
遍歷數組
使用 ipairs
或 for
循環:
-- 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 doarray[i] = {}for j=1,3 doarray[i][j] = i*jend
end-- 訪問數組
for i=1,3 dofor j=1,3 doprint(array[i][j])end
end
注意事項
- 索引從 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) -- 降序