Lua问题与表长度?

时间:2015-04-21 14:53:26

标签: arrays lua lua-table

我正在乱搞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.有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

  

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

来自Programming in Lua 19.1