天天看點

Lua文法小貼士(十三)可變參數與unpackLua支援可變參數,用...表示。

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)})