如何在 Lua 中获取表的长度?

我刚刚接触 Lua,并且我的版本是 5.1。

我有一个问题,有人可以帮我解释一下 '#' 吗?

local tblTest =
{
    [1] = 2,
    [2] = 5,
    [5] = 10,
}
print(#tblTest)

这会输出 2 和 ..

local tblTest =
{
    [1] = 2,
    [2] = 5,
    [4] = 10,
}
print(#tblTest)

输出是 4。为什么?

谢谢大家。

点赞
用户5829027
用户5829027

输出结果是 4。因为最后一个有值的键是 4,但这并不意味着 3 没有被定义。在 Lua 中,3 将被定义为空值。当使用 # 运算符时,它将计算序列中每个具有值的键,直到最后一个非空值。除此之外(我可能有所错误),表中的最后一个键是 2 的幂,由于语言的优化,它会计算达到 2 的幂的值。通常应避免使用带有空值的表格,因为会发生一些奇怪的行为。

但是以下代码可以实现你想要的结果:

local T = {
[1] = 2,
[2] = 5,
[10] = 10
}

local lengthNum = 0

For k,v in pairs(T) do
   lengthNum = lengthNum + 1
end
print(lengthNum)
}

这段代码会检查整个表格的键(如 [1][2])并检查它们是否有值。每个具有非空值的键都会使 for 循环再次运行一次。可能有更简单的方法来完成这个操作,但这是我会这样做的方法。

2016-07-30 16:40:03