Lua中的连续表的长度可能会跳过索引?

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

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

但是,如果跳过两个索引,则会在 break 停止

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

这不仅仅是不寻常的构造函数。即使在创建表格之后创建了一个跳过的索引,只要 break 仅为一个,它仍然会计数。

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

这是实现错误还是 Lua 应该这样工作?为什么会这样?任何有关此文档的参考资料都很有趣。

点赞
用户107090
用户107090

这是它的工作方式。只有当表是一个没有空洞的序列时,表的长度才有定义。请参阅http://www.lua.org/manual/5.2/manual.html#3.4.6

2013-04-20 01:21:35