让arg在Lua 5.2中的varag函数中工作(集成在Delphi中)

时间:2012-03-20 11:39:13

标签: delphi lua

使用Lua 5.2 API时,下面的代码打印“nil”

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

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

但是这段代码在使用Lua 5.1时起作用,并打印“table”

2 个答案:

答案 0 :(得分:11)

如果您指的是vararg函数,argwas deprecated already in 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

答案 1 :(得分:3)

那是因为自Lua 5.1以来arg已被弃用。它仅作为兼容性功能保留。

参考文献:Lua 5.1 manualunofficial LuaFaq

解决方法是使用此行生成名为arg的表:

local arg={...}