直入主题
我们要取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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。