这不是问题。 Just Lua很棒。
t = {1, 2, 3}
print(table.unpack(t)) -->1 2 3
print(0, table.unpack(t)) -->0 1 2 3
print(table.unpack(t), 4) -->1 4
什么?
答案 0 :(得分:2)
问题归结为为变量赋值,让我简化问题:
function ret_1_2_3()
return 1, 2, 3
end
f, g, h, i = 0, ret_1_2_3()
print(f,g,h,i) --> 0 1 2 3
f, g, h, i = ret_1_2_3(), 4
print(f,g,h,i) --> 1 4 nil nil
使用“...”时,您不必为变量命名,但它遵循相同的规则,table.unpack
返回多个值。在Lua 5.2 Reference Manual下面的第3.4点,它说:
如果表达式用作表达式列表的最后一个(或唯一的)元素,则不进行任何调整(除非表达式括在括号中)。在所有其他上下文中,Lua将结果列表调整为一个元素,要么丢弃除第一个之外的所有值,要么在没有值时添加单个nil。
我确实花了一些时间才弄明白,这是你问过的一个很好的问题。