遍历可变参数
local function Test1(...) local argCnt = select("#", ...) for i=1,argCnt do local item = select(i, ...) print(i, item) end end Test1(4, 5, 6)
遍历可变参数方式2
local function Test2(...) local args = {...} for i, v in ipairs(args) do print(i, v) end end Test2(7, 8, 9)
可变参数返回
local function Test3(...) return ... end print(Test(1, 2, 3))
可变参数传递
local function Test4(...) print("var args:", ...) end local function Test5(...) Test4(...) end Test5(1, 2, 3)
关于select函数
print(select(3, "a", "b", "c", "d")) --返回第3~最后一个元素,即打印:c d
local function Test7(...) local i, j, k = select(2, ...) print(i, j, k) end Test7("a", "b", "c", "d", "e") -- i, j, k分别为b, c, d
关于pack和unpack函数
1) lua 5.1:unpack在全局空间_G里面;没有pack函数,可以用{...}
2) 5.2及之后的版本:unpack移到了table.unpack中;有table.pack,也支持{...}
unpack的作用:将table解包为独立的多个数据,比如可以将table解包后传给可变参数
local function Test6(...) print("var args:", ...) end local data = {"a", "b", "c"} Test6(unpack(data)) -- lua 5.1 Test6(table.unpack(data)) -- lua 5.2及之后的版本
参考
lua中的可变长参数...,pack,unpack,select方法 - 哔哩哔哩 (bilibili.com)
标签:function,...,end,unpack,lua,参数,可变,print,local From: https://www.cnblogs.com/sailJs/p/18318615