请原谅,如果已经问过这个问题,但是从我的研究中,我只发现了用户对表索引为零的问题。我的问题是为什么表索引不能为nil / nan。我可以理解为什么nan不能成为索引,因为它无法进行身份比较,但是为什么不能为nil。
在Lua中,表条目可以为nil,但这仅表示它们没有引用/值。
local t = { 1, 2, nil, 4, 5 }
for i = 1, 5 do
print( i, t[i] )
end
这将打印:
1 1
2 2
3 nil
4 4
5 5
尽管这意味着条目#3没有参考值/值,即为零。如果您尝试使用pairs()函数,则不会选择这样的键值对,即
local t = { a=1, b=nil, c=3 }
for i, j in pairs( t ) do
print( i, j )
end
这将打印:
a 1
c 3
它不会打印出“ b nil”,因为对于其他所有可能的表条目也是如此,例如,d也将为nil,所以d,e,f等也将如此。
nil仅表示键没有值,如果键在表中没有值,则无需存储它。