Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数字、字典等。
Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
Lua table 是不固定大小的,你可以根据自己需要进行扩容。
table(表)的构造
构造器是创建和初始化表的表达式。表是Lua特有的功能强大的东西。最简单的构造函数是{},用来创建一个空表。可以直接初始化数组:
tab1= {} --空表
tab2 = {key1 = "value1",key2 = "value2"} --初始化
--访问形式
print(tab2.key1)
print(tab2["key1"])
--遍历
for k,v in pairs(tab2) do
print(k..v)
end
tab3 = {"a","b","c","d"} --索引从1开始,依次递增的表
for key,value in pairs(tab3) do
print(key..value)
end
--[[
输出:
value1
value1
key1value1
key2value2
1a
2b
3c
4d
--]]
-- 初始化表
mytable = {}
-- 指定值
mytable[1]= "Lua"
-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存
表的中元素的连接,插入和移除,,,
--表的方法 table.xxxmethod
-- 拼接成字符串
print(table.concat(mytable)) -- 无缝连接
print(table.concat(mytable,",")) -- 带逗号的连接
print(table.concat(mytable,",",2,4)) -- 带逗号连接第二个到第四个元素
-- 添加数据
mytable[6] = 'java' --需要知道索引
mytable[#mytable+1] = "php" --取得表的长度+1
table.insert(mytable,"c") --使用内置的方法添加
--插入到2的位置 后面的后移
table.insert(mytable,2,"sql")
--移除指定位置元素,不写则移除最后一个
table.remove(mytable,2)
--移除2位置的元素,致为空,,此时后面的元素不会发生移动
mytable[2] = nil
--查看结果
for v,k in pairs(mytable) do
print(v,k)
end
--[[ 输出是:
luaC#jsbooc++
lua,C#,js,boo,c++
C#,js,boo
1 lua
3 js
4 boo
5 c++
6 java
7 php
8 c
--]]
**表的排序:**除了对数字对字母也可以排序,根据字符的ACIll码进行排序:
示例:
mytable = {'lua','C#','js','boo','c++'}
print('排序前')
for v,k in pairs(mytable) do
print(v,k)
end
table.sort(mytable)
print('排序后')
for v,k in pairs(mytable) do
print(v,k)
end
--[[ 输出是:
排序前
1 lua
2 C#
3 js
4 boo
5 c++
排序后
1 C#
2 boo
3 c++
4 js
5 lua
--]]
注意:当我们获取的table的长度的时候无论是使用#还是table.getn其都会在索引中断(索引不是连续数字)的地方停止技术,而导致无法正确获得table 的长度,推荐使用迭代器的形式遍历数组
作者:Czhenya
链接:https://czhenya.blog.csdn.net/article/details/78443857
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。