Lua中顺序表的长度可以跳过索引?

时间:2013-04-20 00:11:12

标签: lua indices lua-table

在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应该如何工作。为什么会这样?任何对此文档的引用都会很有趣。

1 个答案:

答案 0 :(得分:3)

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