吉文翔 2019-07-16 01:36
浏览 183

Lua中关于可变参数和ipairs,pairs之间的疑惑 , 参数长度到底是几?

函数可变参数 ...

如果传入1,2,3。 3个参数

用#打印arg长度为3

如果用ipairs遍历arg的值,得到的是1,2,3

但如果用pairs遍历arg的值,得到的却是1,2,3,3,最后一位为长度

用变量接收 ... 以后 , 用pairs遍历 , 却是1,2,3

这样为什么#打印出来的长度不为4 , 用变量接收之后发生了什么??

test(1,2,3)
function test(...)
    print(#arg)  --长度为3

    for k,v in pairs(arg) do
            print(v)--得到结果1,2,3,3
    end

    for k,v in ipairs(arg) do
            print(v)--得到结果1,2,3
    end

    local var = {...}
    for k,v in pairs(var) do
            print(v)--得到结果1,2,3
    end
end
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 CSS实现渐隐虚线边框
    • ¥15 thinkphp6配合social login单点登录问题
    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题