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 @   yanghui01  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2023-07-28 ugui模仿 - InputField光标的显示,闪烁,左右移动
2023-07-28 ==和ReferenceEquals区别
点击右上角即可分享
微信分享提示