如何在 Lua 5.3 中正确地重新定义打印?

How to correctly redefine print in 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 ~]$ 

尽管这在 Lua 5.1 中有效,但在 Lua 5.3 中无效,并且,对于一些原因,Torch。我在 Lua 5.3 文档中查找了 "triple dots" 表达式,但找不到有关如何访问 ... 参数的参考。你能解释一下发生了什么变化以及如何为 Lua 5.3 重新定义 print 吗?

arg table 可变参数函数的自动创建在 Lua 5.1 中已弃用,并在 Lua 5.2 中删除。

如 Egor 所述,使用

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

而不是

for _,a in ipairs(arg) do

或添加

local arg={...}

在函数的开头。

for _,a in ipairs({...}) do错误的,不支持nil

右重写

local arg = table.pack(...)
for i = 1 ,arg.n do
    old_print(arg[i])
end