"
原文:
用法
unpack它接受一个数组(table)作为参数,并默认从下标1开始返回数组的所有元素
arrayData = {""a"",""b"",""c"",""d"",""e""}
print(arrayData) -- 打印数组的地址
print(table.unpack(arrayData)) -- 从第1//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDEzMTI5Ng==.html
个开始打印数组//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDEzNDYyMA==.html
print(table.unpack(arrayData, 2)) --从第2个开始打印数组print(table.unpack(arrayData, 1, 3)) --从第一个打印3个数据
注意:在Lua5.1中,unpack是全局函数,可以直接使用,但是在Lua5.2中,unpack被移到table.unpack,所以在Lua5.2以后要用table.unpack替代unpack。
如果遇到数组下有nil,或者有字母key的时候
local info={1,2,3,nil,5,p=6}
local a,b,c,d,e,f=unpack(info)
print(a,b,c,d,e,f)
输出结果:
1 2 3 nil 5 nil
关于不定数量参数的处理
5.1版本及以前可直接处理
local function fun1(...)
print(unpack(arg))
end
fun1(1,nil,3) //1,nil,3
5.2版本以后需要手动转化
local function fun2(...)
local arg = { ... }
print(table.unpack(arg))
end
fun2(1,nil,3) //1,nil,3
table.length问题
如果参数是{nil, 2, nil}, 就无法正常打印出来,也就是说有nil值的时候,#table的计算结果并不确定
"