https://blog.csdn.net/luoyikun/article/details/121219422
function c(a,b,c,d,e)
print(a,b,c,d,e)
end
function a()
local temp = {nil,1,nil,3,nil}
c(unpack(temp))
end
a()
输出:
我们看到temp中的元素有nil,在unpack之后,传递给c函数,结果输出的b之后的都为nil,那这就不对了。
因为我明明传递了5个参数,却只有前两个正确的接收了,c、d、e均错误。
其实我们只要稍微的改动下就可以:
function c(a,b,c,d,e)
print(a,b,c,d,e)
end
function a()
local temp = table.pack(nil,1,nil,3,nil)
c(unpack(temp, 1, temp.n))
end
a()
我们把参数使用table.pack包装下,然后在使用unpack函数,从1到temp.n的长度进行解压,这样输出的就对了。