Lua在使用表长度时出现问题?

我在尝试使用 Lua 的表格时发现了以下情况:

local t1 = {1, 5, nil, 10}
local t2 = {1, 5, nil, 10, nil}

print(t1[5], t2[5]) --> nil   nil
print(#t1, #t2) --> 4   2

我本来以为两个表格的长度都应该是4,但是实际上 t2 的长度却是2。有人能解释一下吗?

点赞
用户88888888
用户88888888

经常在 Lua 中,我们假设数组在其第一个 nil 元素之前结束。这个约定有一个缺点:我们不能在数组中有 nil。[...] 但有时我们必须允许数组中有 nil。在这种情况下,我们需要一种方法来为数组保留显式大小。

来自 Programming in Lua 19.1

2015-04-21 15:04:11