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

时间:2017-01-08 16:21:19

标签: lua lua-5.3

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

> 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文档中的"三点"表达式但无法找到有关如何访问...参数的参考。你能解释一下改变了什么以及如何为Lua 5.3重新定义print吗?

2 个答案:

答案 0 :(得分:2)

在Lua 5.1中不推荐为vararg函数自动创建arg表,在Lua 5.2中将其删除。

如Egor所述,请使用

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

而不是

for _,a in ipairs(arg) do

或添加

local arg={...}

在功能开始时。

答案 1 :(得分:0)

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

正确重写

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