Luatable的长度问题-创新互联
直入主题
宁陕ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!我们要取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
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:Luatable的长度问题-创新互联
文章起源:http://hbruida.cn/article/ccjgph.html