使用Lua 5.2 API时,下面的代码打印“nil”
function __debug(szName, ...)
print(type(arg));
end
__debug("s", 1, 2, 3, 4);
但是这段代码在使用Lua 5.1时起作用,并打印“table”
答案 0 :(得分:11)
如果您指的是vararg函数,arg
表was 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 manual,unofficial LuaFaq
解决方法是使用此行生成名为arg的表:
local arg={...}