Lua Table元素的删除

Lua 中的Table元素删除主要有两种方法:
1、将字段赋值为 nil
2、使用Table库里的 table.remove(table, index)

下面着重讲解两种方法

1 table.remove

先来看一下这个库函数的函数原型:

table.remove(table, pos)

@table:要删除的表
@pos: 要删除表元素的位置,这个参数可选,如果不传的话, 默认为table的长度,即从表最后一个元素删起

 
 
  1. local t = {10, 20, 30, 40,50, 60}
  2. table.remove(t, 3)
  3. for k,v in pairs (t) do
  4. print("t", k, v)
  5. end

结果:
281008018475522.png
可以看到,第3个元素30已经找不到了!
除此之外,还可以看到, 后面的40,50,60分别往前移了一位
由此,千万记得不要在循环中多次使用table.remove(),如果一定要用,谨慎测试!

2 赋值为 nil

以下面这段代码为实验环境

 
 
  1. local t =
  2. {
  3. [10] = 1,
  4. [20] = 2,
  5. [30] = 3,
  6. [40] = 4,
  7. [50] = 5,
  8. [60] = 6
  9. }

如果用table.remove()的话,pos的位置根本不好找,因为Lua内部非数组排序是根据hash值来的
对于这种pos不好找的表结构,可能赋值为nil相当方便,
假设我要删除t[30],

只需要

 
 
  1. t[30] = nil
  2. for k,v in pairs (t) do
  3. print("t", k, v)
  4. end

结果为
281008030346592.png
可以看到, 已经找不到 t[30],3了

当然,赋值为nil不仅仅只能用来删除Table的元素,它可以用来删除任何变量!





转载于:https://www.cnblogs.com/chenhaobright/p/f03ae2412f4e4b8f7a453600d9c9aec8.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值