--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))
参考:http://www.runoob.com/lua/lua-tables.html
码云上的相关工程:https://gitee.com/luguoshuai/LearnLua