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

以下为table的补充内容:

table.insert(t, pos, value) 在t指定位置插入元素
table.insert(t, value) 在t末尾插入元素

table.remove(t, pos) 在t指定位置删除元素,并返回删除的元素
table.remove(t) 在t末尾删除元素,并返回删除的元素

 1 a = {};
 2 
 3 table.insert(a,1, 12)
 4 table.insert(a,2, 45)
 5 table.insert(a,50)
 6 
 7 for i,v in ipairs(a) do
 8     print(i,v)
 9 end
10 
11 print("-----------");
12 
13 b = table.remove(a, 1);
14 
15 print("b = " .. b);
16 
17 table.remove(a);
18 
19 for i,v in ipairs(a) do
20     print(i,v)
21 end

输出结果:

转载于:https://www.cnblogs.com/luguoshuai/p/9219459.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值