unpack,接受一个table做个参数,然后按照下标返回数组的所有元素
##unpack lua 版本 <= 5.1
1local t = {nil , 3} 2retunrn unpack(t) // nil , 3
##table.unpack lua 版本 > 5.1
1local t = {nil, 3} 2return table.unpack(t) // nil, 3
##关于不定数量参数的处理 5.1版本及以前可直接处理
1local function fun1(...) 2 print(unpack(arg)) 3end 4 5fun1(1,nil,3) //1,nil,3
5.2版本以后需要手动转化
1local function fun2(...) 2 local arg = { ... } 3 print(table.unpack(arg)) 4end 5fun2(1,nil,3) //1,nil,3
##table.length问题 有一个很有意思的问题 如果参数是{nil, 2, nil}, 就无法正常打印出来 为什么呢?看了文档,发现是和#table有关 
#table的计算方式
也就是说有nil值的时候,#table的计算结果并不确定
1local function fun(...) 2 local arg = {...} 3 print(table.unpack(arg)) 4 for k, v in pairs(arg) do 5 print(k, v) 6 end 7 print(arg [1],arg[2],arg[3], #arg) 8 print('***************') 9end 10 11fun(nil, 2, nil) 12fun(1,2,nil) 13fun(1,nil,nil) 14fun(nil,nil,3) 15 16 17 18 192 2 20nil 2 nil 0 21*************** 221 2 231 1 242 2 251 2 nil 2 26*************** 271 281 1 291 nil nil 1 30*************** 31nil nil 3 323 3 33nil nil 3 3 34***************
总之,table中有nil值时,#table的结果并不确定。 所以以后使用table的时候,尽量不要设置nil,而是要table.remove