lua循环过程中删除pairs(table)的table会怎么样

lua循环中的for-i方式跳过,此处只讲for-i,v方式,也就是pairs/ipairs方式。

例子,我需要利用for-pairs(table)循环遍历table中的元素,在遍历过程中,每次处理完一个元素后,我会按需决定是否删除掉table中这个元素。那么问题来了,删除元素之后是否改变table的结构,for循环是否能继续进行下去?下面进行测试。

ipairs测试代码:


测试结果:



结果表明,

1、在循环的每一次 i,v 中,程序会保持着 i,v 的值,即使在table中已经被移除。

2、table.remove执行后,对应的 t 会自动整理好,整理方式是移除元素后把后面的元素往前推。

3、每一次 i,v 后,i 依然会根据正常顺序递增,即使 i 原本的 v 已经移除,被后一个 v 所替换,因此remove后下次 i,v 会跳过被移除的v的后一个元素。


pairs测试代码:


测试结果:



结果表明:

1、lua table中,无索引元素会自动添加索引,从1开始+1递增。如果无索引元素放在table最后,前面元素中索引与自动添加的索引相同的元素会被覆盖。

2、table.remove后,该元素之后按顺序的、连续的索引的元素会往前推,但是索引断开的元素不受影响,依然在原索引位置。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Luatable是一种非常重要的数据结构,可以用来存储和组织数据。在Luatable可以被看作是一种关联数组,它可以通过任意类型的值作为索引来访问和操作其的元素。 在Lua,我们可以使用不同的方式来循环遍历table的元素。下面是几种常见的循环方式: 1. 使用pairs函数循环遍历table的键值对: ```lua local myTable = {key1 = value1, key2 = value2, key3 = value3} for key, value in pairs(myTable) do print(key, value) end ``` 这种方式遍历table所有的键值对,并将键和值分别赋值给变量key和value。 2. 使用ipairs函数循环遍历table的数组部分: ```lua local myTable = {"apple", "banana", "orange"} for index, value in ipairs(myTable) do print(index, value) end ``` 这种方式适用于table只包含连续整数作为索引的情况,它遍历数组部分,并将索引和对应的值分别赋值给变量index和value。 3. 使用数字索引循环遍历table: ```lua local myTable = {10, 20, 30} for i = 1, #myTable do print(i, myTable[i]) end ``` 这种方式适用于table只包含连续整数作为索引的情况,通过指定起始索引和结束索引的方式来循环遍历table。 4. 使用迭代器函数循环遍历table: ```lua local myTable = {key1 = value1, key2 = value2, key3 = value3} for key, value in pairs(myTable) do print(key, value) end ``` 这种方式使用了Lua的迭代器函数,可以自定义遍历table的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haobaworenle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值