Lua table 的长度问题
admin
2023-08-02 17:48:21
0

直入主题

我们要取lua table的长度时习惯这样

local tb = {1,2,3,4}
print(#tb)

这时候,输出理所当然的是4,如果在程序中我们需要判断长度时使用这样的方法,再看一下

tb[1] = nil
print(#tb)

输出还是4,似乎有点背离我们的意愿

我们想知道这个table里面是不是有4个值,但是有一个值被置空了,输出结果却没有及时告诉我们


发生这样问题的原因是,lua在初始化table的时候,会给这个table分配值存储的空间,代码里面tb初始化包含4个数字值,然后对第一个值置空,但是分配出去的空间依然存在。说到这里,已经有人明白了,"#"取的是table分配出的空间,稍稍偏离了实际逻辑的需求,看这样的代码

local tb = {nil,nil,nil,nil}
print(#tb)

输出是0

因为lua碰到nil,先不分配空间,所以#tb自然也就是0

相关内容

热门资讯

美国设定时间要求伊朗承诺停止袭... 【环球网报道 记者 姜蔼玲】据美国Axios新闻网当地时间10日报道,美国要求伊朗公开承认霍尔木兹海...
新华鲜报丨创历史新高 上半年3... 出入境人数创历史新高、外国人入境游持续火爆、出入境政务服务更便利贴心……7月10日,国家移民管理局通...
山东迎战“巴威”,多地水库提前... 今年第9号台风“巴威”正朝山东奔来。根据央视新闻报道,“巴威”今天(7月11日)零时再度增强为强台风...
哈梅内伊葬礼结束,灵柩移入陵墓 据凤凰卫视报道,伊朗已故最高领袖哈梅内伊的安葬仪式已经结束,他的灵柩被移入陵墓。哈梅内伊网站公布了相...
广西抗洪军人在救援途中,偶遇自... 7月9日上午在广西贵港市港北区执行城市清淤任务的陆军第75集团军某旅官兵突然接到新的救援任务有数百名...
美媒:万斯等人仍与伊朗间接对话... 据凤凰卫视报道,美国总统特朗普7月10日宣布,美国与伊朗的停火已经结束,但双方将继续谈判。知情人士透...
空调显示E5故障代码的维修方法 空调3匹机,开机制冷运行后出现E5故障代码,断电后重新开机,打到制冷运行约3分钟后,又出现E5故障代...
奥克斯空调显示e5是什么问题 奥克斯空调显示 E5 可能表示以下问题:1. 低电压保护:电网电压过低,导致空调无法正常运行。2. ...
日立全自动洗衣机故障 日立全自动洗衣机是现在市场上比较流行的一款家电产品,但是在长时间使用过程中,难免会出现一些故障。下面...
日立空调遥控器显示热启动 这指的是启动了空调的电辅热功能,也就是在制热模式下的加热辅助功能,由于自身升温相对不高,以及额定电压...