Lua table 的长度问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua table 的长度问题相关的知识,希望对你有一定的参考价值。

直入主题

我们要取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

本文出自 “breeze” 博客,请务必保留此出处http://387249.blog.51cto.com/377249/1874392

以上是关于Lua table 的长度问题的主要内容,如果未能解决你的问题,请参考以下文章

Lua中table长度到底是怎么来的

lua数据结构之table的内部实现

Lua用table实现各种数据结构-数组

lua 中为了批量删除 元素 我写了如下代码

chapter11_1 Lua数组列表

Lua基础