如何在 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
我经常使用 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