--table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组、字典等 --Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。 mytable = {} print("mytable 的类型:",type(mytable)) mytable[1] = "Lua" mytable["wow"] = "修改前" print("mytable 索引为 1 的元素:",mytable[1]) print("mytable 索引为 wow 的元素:",mytable["wow"]) --两个table指向的是同一块内存 lgstable = mytable print("lgstable 索引为 1 的元素:",lgstable[1]) print("mytable 索引为 wow 的元素:",mytable["wow"]) lgstable["wow"] = "修改后" print("mytable 索引为 wow 的元素:",mytable["wow"]) --释放变量 lgstable = nil print("lgstable :",lgstable) --mytable依然可以访问 print("mytable 索引为 wow 的元素:",mytable["wow"]) mytable = nil print("mytable :",mytable) --[[ 以上代码执行结果: mytable 的类型: table mytable 索引为 1 的元素: Lua mytable 索引为 wow 的元素: 修改前 lgstable 索引为 1 的元素: Lua mytable 索引为 wow 的元素: 修改前 mytable 索引为 wow 的元素: 修改后 lgstable : nil mytable 索引为 wow 的元素: 修改后 mytable : nil --]] --table的操作 --table连接表中的元素为字符串 fruits = {"banana","orange","apple"} --返回table连接后的字符串 print(table.concat(fruits)) --指定连接符 print(table.concat(fruits,',')) --指定索引 print(table.concat(fruits,',',2,3)) --[[ 运行结果: bananaorangeapple banana,orange,apple orange,apple --]] --插入和移除 fruits2 = {"banana","orange","apple"} --末尾插入 table.insert(fruits2,'mango') print(fruits2[4]) --索引为2的键处插入 table.insert(fruits2,2,'grapes') print(fruits2[2]) print(fruits2[5]) table.remove(fruits2) print(fruits2[5]) --[[ 运行结果: mango grapes mango nil --]] --table排序 fruits3 = {"banana","orange","apple", "grapes"} print("排序前") for i,v in ipairs(fruits3) do print(i,v) end table.sort(fruits3) print("排序后") for i,v in ipairs(fruits3) do print(i,v) end --获取table的长度 print(#fruits3) print(table.getn(fruits3))
以下为table的补充内容:
table.insert(t, pos, value) 在t指定位置插入元素
table.insert(t, value) 在t末尾插入元素
table.remove(t, pos) 在t指定位置删除元素,并返回删除的元素
table.remove(t) 在t末尾删除元素,并返回删除的元素
1 a = {}; 2 3 table.insert(a,1, 12) 4 table.insert(a,2, 45) 5 table.insert(a,50) 6 7 for i,v in ipairs(a) do 8 print(i,v) 9 end 10 11 print("-----------"); 12 13 b = table.remove(a, 1); 14 15 print("b = " .. b); 16 17 table.remove(a); 18 19 for i,v in ipairs(a) do 20 print(i,v) 21 end
输出结果: