Lua 中 table(表) 的简单使用

2021-01-04 15:04发布

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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。