Lua中Table的学习

--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

猜你喜欢

转载自www.cnblogs.com/luguoshuai/p/9219459.html