为什么Lua表索引不能为零?

问题描述 投票:0回答:1

请原谅,如果已经问过这个问题,但是从我的研究中,我只发现了用户对表索引为零的问题。我的问题是为什么表索引不能为nil / nan。我可以理解为什么nan不能成为索引,因为它无法进行身份比较,但是为什么不能为nil。

lua lua-table indices
1个回答
0
投票

在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仅表示键没有值,如果键在表中没有值,则无需存储它。

© www.soinside.com 2019 - 2024. All rights reserved.