使用"#"运算符来计算Lua中表的长度?

时间:2015-03-25 06:18:30

标签: lua lua-table

当我使用#来计算表格的长度时,我有一个问题。例如:

local t = {"a", "b"}
local t1 = {"a", nil}
print(#t)       -- 2
print(#t1)      -- 1
local t = {"a", "b"}
local t1 = {nil, "a"}
print(#t)       -- 2
print(#t1)      -- 2

有人可以告诉我它为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

除非定义__len元方法,否则#运算符只能在作为序列的表上运行。

序列是一个表,对于某些非负整数{1..n},其正数字键集合等于n

在你的例子中:


local t = {"a", "b"}

t是一个长度为2的序列。


local t1 = {"a", nil}

相当于local t1 = {"a"},因此t1是一个长度为1的序列。


local t1 = {nil, "a"}

t1不是序列,因此未定义#t1