lua #符号来获取非连续数组长度的问题

 

一直以来,以为lua的#符号获取到的是一个连续表中非空的前一个下标。

比如#{1,2,nil,4,5}获取到的长度为2.但是今天在做一个测试的过程中发现#获取到的并不一定是这个值。

查看相关官方文档发现,#获取到的是其遍历到的第一个后面是nil值的元素下标。

而#遍历lua表的时候并非是按照顺序从1到n这样的遍历顺序,而是按照hash表来遍历的(估计是按表在内存里的地址下标顺序遍历的,为了节省性能?)所以在表中有多个nil的时候,#{...}可能返回任意一个nil前面的下标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值