我在Lua解包函数中偶然发现了一个奇怪的行为
table1 = {true, nil, true, false, nil, true, nil}
table2 = {true, false, nil, false, nil, true, nil}
a1,b1,c1,d1,e1,f1,g1 = unpack( table1 )
print ("table1:",a1,b1,c1,d1,e1,f1,g1)
a2,b2,c2,d2,e2,f2,g2 = unpack( table2 )
print ("table2:",a2,b2,c2,d2,e2,f2,g2)输出:
table1: true nil true false nil nil nil
table2: true false nil nil nil nil nil第二次解包传递的参数最多为第一个nil值。我可以接受这个事实。第一个表提供了4?参数,其中一个在中间为零。它有4个参数不是nil,但它们不是显示的参数。
有人能解释一下这个吗?这是在codepad.org和Lua5.1上尝试过的
发布于 2009-11-04 18:59:49
2.2 - Values and Types
...类型表实现了关联数组,即不仅可以用数字索引的数组,而且可以用任何值(nil除外)索引的数组。表可以是异构的;也就是说,可以包含所有类型的值(nil除外)。..。
给定一个条目的nil将破坏表的枚举,并且您的变量将不能正确初始化。
下面是一个简单的示例,它演示了一个有问题的行为:
table1 = {true, false, nil, false, nil, true, nil}
for k,v in ipairs(table1) do
print(k, v)
end输出:
1 true
2 false
>Exit code: 0https://stackoverflow.com/questions/1672985
复制相似问题