“#”lua表长度计算
local a = {};
a[1] = 10;
a[2] = 20;
a[3] = 30;
a[4] = 40;
--a[6] = 60;
a[7] = 70;
print(#a); -->4
local a = {};
a[1] = 10;
a[2] = 20;
a[3] = 30;
a[4] = 40;
a[6] = 60;
a[7] = 70;
print(#a); -->7
这里就比较奇怪了,得到的不是table的长度。Lua文档中说,如果是一个连续的序列,那么才可以用#计算table的长度,如果中间有nil值,计算将会有问题。那就到源码中找找答案。#计算长度调用的是lua_rawlen函数,该函数如下。
LUA_API size_t lua_rawlen (lua_State *L, int idx) {
StkId o = index2addr(L, idx);
switch (ttypenv(o)) {
case LUA_TSTRING