Lua 中 table(表) 的简单使用

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 的长度,推荐使用迭代器的形式遍历数组

你可能感兴趣的:(ジ﹋★☆『,Lua...,』)