我经常使用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
吗?
答案 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