在Delphi中集成的Lua 5.2中使varargs函数工作的参数获取方法

当使用 Lua 5.2 API 时,以下代码会打印出 "nil"

function __debug(szName, ...)
    print(type(arg));
end

__debug("s", 1, 2, 3, 4);

但是当使用 Lua 5.1 时,这段代码可以运行并打印出 "table"

原文链接 https://stackoverflow.com/questions/9786051

点赞
stackoverflow用户513763
stackoverflow用户513763

这是因为自 Lua 5.1 起,arg 已被弃用。它只是作为兼容性功能而保留。

参考文献:Lua 5.1 手册非官方的 Lua 常见问题

一个解决方法是使用这行代码生成一个名为 arg 的表:

local arg={...}
2012-03-20 12:51:17
stackoverflow用户221509
stackoverflow用户221509

如果你打算使用可变参数函数,arg 表在 Lua 5.1 中已经被弃用。在 Lua 5.2 中,如果你需要使用它,你可以使用 table.pack 来创建 arg

function debug(name, ...)
    local arg = table.pack(...)
    print(name)
    for i=1,arg.n do
        print(i, arg[i])
    end
end
2012-03-20 12:52:32