如何在Lua5.3中正确重新定义打印?

如何在Lua5.3中正确重新定义打印?,lua,lua-5.3,Lua,Lua 5.3,我经常使用print函数与os.exit()一起进行调试。我不想每次使用print时都键入os.exit(),因此我想重新定义此函数 > function pprint(...) >> for _,a in ipairs(arg) do >> print(a) >> end >> os.exit() >> end > pprint('hello',1,2,3) hello 1 2 3 [johndoe@dell-john

我经常使用
print
函数与
os.exit()
一起进行调试。我不想每次使用
print
时都键入
os.exit()
,因此我想重新定义此函数

> function pprint(...)
>> for _,a in ipairs(arg) do
>> print(a)
>> end
>> os.exit()
>> end


> pprint('hello',1,2,3)
hello
1
2
3
[johndoe@dell-john ~]$ 

虽然这在lua5.1中起作用,但在lua5.3中不起作用,并且由于某些原因。我在Lua5.3文档中查找“三点”表达式,但找不到有关如何访问
参数的参考。您能否解释一下Lua 5.3中更改了什么以及如何重新定义
print

自动创建vararg函数的
arg
表在Lua 5.1中被弃用,在Lua 5.2中被删除

正如Egor所提到的,使用

for _,a in ipairs({...}) do
而不是

for _,a in ipairs(arg) do
或添加

local arg={...}
函数开始时。

对于uIpairs({…})do中的a
错误,它不支持
nil

右重写

local arg=table.pack(…)
对于i=1,参数n do
旧打印(arg[i])
结束

对于ipairs{…}do中的uA