[Lua]表的简单应用

1、前言

table作为lua中的一种数据结构,在使用上有时可以看作为数据或者字典。

2、表的建立

(1)空表建立

a = {}
print(type(a))

(2)指定值建立

a ={name="esk"}
a["age"]=18
print(a["name"]..":"..a["age"])

指定值建立表可通过{ }方式,或者[ ]。

注:在使用{ }方式时,name作为key时无需添加“ ”,在通过[ ]访问对应value时需以字符串形式作为key

(3)使用循环建立

--初始化空表
a={}
--通过循环赋值
for i = 1 ,10 do
	a[i]=i
end
for k,v in pairs(a) do
	print(k..":"..v)
end

3、表的插入、更新和删除

(1)插入元素

student = {"hong","ming","tom"}
print("当前学生为")
for k,v in pairs(student) do
print(v)
end
table.insert(student,"marry") --末尾插入
table.insert(student,3,"liu") --在索引为3的地方插入
print("插入后")
for k,v in pairs(student) do
print(v)
end

(2)更新元素

student = {"hong","ming","tom"}
student[3] ="feng"
print(student[3])

此处使用索引3进行更新是因为,在表初始化时1对应hong,2对应ming,3对应tom,此处的3为key,tom为value

(3)删除元素

student = {"hong","ming","tom","esk"}
table.remove(student)  --默认删除随后一个
table.remove(student,2)--删除索引为2
for k,v in pairs(student) do
print(v)
end

(4)删除表

a = {key = 6}
print("初始状态"..type(a))
a = nil
print("删除后"..type(a))

a在lua中实则为一个指针,将其置空后,lua的垃圾回收机制将会回收对应的内存空间

4、表的内置函数

(1)table.concat(表,连接符,起始,结束)

student = {"hong","ming","tom","esk"}
print(table.concat(student," "))

(2)table.foreach(表,函数)

--示例1
student = {"hong","ming","tom","esk"}
function test(key,value)
print(key..":"..value)
end
table.foreach(student,test)

--示例2
student = {"hong","ming","tom","esk"}
table.foreach( student, function( key, value )
 print( key  ..":".. value )
end )

(3)table.sort(表)

student = {"hong","ming","tom","esk"}
table.sort(student)
for i,v in pairs(student) do
print(v)
end

5、表的判空

student = {}
if next(student) == nil then
print("table is nil")
else
print("table is not nil")
end

使用next函数遍历表,可使用该方法判断表是否为空。

使用以下方法都为错误

if student == nil      --student仅为一个指针,该方法仅能判断student指向的地址是否为空

if student == {}       --student与表的地址进行比较

if #student == 0       --使用#获取长度条件为student不为nil

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值