我正在乱搞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.有人可以解释一下吗?
答案 0 :(得分:2)
通常,在Lua中,我们假设数组在其第一个nil元素之前结束。这个约定有一个缺点:我们不能在数组中有一个nil。 [...]但有时我们必须在数组中允许nils。在这种情况下,我们需要一种方法来保持数组的显式大小。