lua可变参数

遍历可变参数

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可变参数 - 简书 (jianshu.com)

lua中的可变长参数...,pack,unpack,select方法 - 哔哩哔哩 (bilibili.com)

 

posted @ 2024-07-28 13:38  yanghui01  阅读(1)  评论(0编辑  收藏  举报