Lua支援可變參數,用...表示。
例如:
local function func(...)
print(...)
end
當然也可以在前面添加強定參數
local function funca(a,...)
--TODO:
end
可以用花括号将...打包起來成為一個table,例如:
local function func(...)
print(...)
local tbl = {...}
print(#tbl)
end
調用:
func(1,2,3,4)
另外Lua裡面可以使用unpack函數将數組形式的table拆開。
例如:
local tbl = {2,4,6,8}
local a,b,c,d = unpack(tbl)
這個函數有三個參數,第一個參數就是要拆的table,第二個參數是起始元素的下标,預設為1,第三個參數是結束元素的下标,預設為table的長度。
我們可以将拆包出來的元素作為上面func的參數:
func(unpack(tbl))
最後補充一點,我們知道Lua的函數可以傳回多個傳回值,例如:
local function funcpp(a)
return a, a + 1, a + 2
end
unpack可以作為尾調用來提供多個傳回值。
另外,傳回值也可以用花括号來打包,例如:
print(#{funcpp(4)})