2

我经常将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 文档中查找“三点”表达式,但找不到有关如何访问...参数的参考。你能解释一下printLua 5.3 发生了什么变化以及如何重新定义吗?

4

2 回答 2

3

在 Lua 5.1 中不推荐为可变参数函数自动创建arg表,并在 Lua 5.2 中删除。

正如 Egor 提到的,使用

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

代替

for _,a in ipairs(arg) do

或添加

local arg={...}

在函数的开头。

于 2017-01-08T18:50:05.527 回答
0

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

正确改写

local arg = table.pack(...)
for i = 1 ,arg.n do
    old_print(arg[i])
end
于 2020-10-20T03:55:33.257 回答