我在 Lua 的 unpack 函数中遇到了奇怪的行为
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" 值为止。我可以理解这一点。
第一个表提供了四个参数,其中一个在中间是 "nil"。它有四个不是 "nil" 的参数,但它们不是显示出来的那个参数。有人能解释一下吗? 这是在 codepad.org 和 lua 5.1 上尝试的。
table.maxn
将返回6
,这是表格table1
中具有非空条目的最大索引。第7个位置上的nil
不会被table.maxn
计算;但是,在这种情况下,它完美地工作。unpack
将返回6个元素,分配给第7个变量的变量将收到nil
作为“列表随着需要延长了尽可能多的nil”用于分配。 - gwell