1

在 Lua 中,如果表中缺少单个数字键,则长度仍会继续计数:

> print(#{[1]=1,[2]=2,[4]=4})
4

但是这个跳过两个索引在休息时停止

> print(#{[1]=1,[2]=2,[5]=5})
2

它不仅仅是非常规的构造函数。即使在创建表之后创建了跳过的索引,它仍然会超过它,所以只要中断只是一个。

> x={1,2}
> print(#x)
2
> x[4]=4
> print(#x)

这是一个实现错误还是 Lua 应该如何工作。为什么会这样?对此文档的任何引用都会很有趣。

4

1 回答 1

3

这就是它的工作原理。仅当表是序列且没有孔时才定义表的长度。请参阅http://www.lua.org/manual/5.2/manual.html#3.4.6

于 2013-04-20T01:21:35.340 回答