我arg
用作函数的参数名称:
function foo(cmd, arg)
-- etc.
end
我刚刚学到arg
的是一个特殊的隐藏变量,它在使用变量参数时表示参数表:
function foo(bar, baz, ...)
-- `arg` now holds arguments 3 and up
end
我应该期待在我的代码中使用arg
作为参数名称有什么问题吗?
我arg
用作函数的参数名称:
function foo(cmd, arg)
-- etc.
end
我刚刚学到arg
的是一个特殊的隐藏变量,它在使用变量参数时表示参数表:
function foo(bar, baz, ...)
-- `arg` now holds arguments 3 and up
end
我应该期待在我的代码中使用arg
作为参数名称有什么问题吗?
首先,请注意我使用的是 Lua 5.3,这是我喜欢的版本。(不过,我想我更喜欢它只是因为它是我开始使用并且最熟悉的。)
其次,你使用的是什么版本的 Lua?在 Lua 5.3 中,arg
指的是包含传递给脚本的所有命令行参数的表。例如,假设我有一个名为的脚本test.lua
,它看起来像这样:
for i, v in ipairs(arg) do
print(i, v)
end
如果我执行脚本 as lua test.lua hello there, friend
,它将产生输出
hello
there,
friend
请注意,在 Lua 5.3 中,arg
是全局环境表的成员,_ENV
; 因此arg
等价于_ENV.arg
or _ENV["arg"]
。
arg
在 Lua 5.3 中,作为函数中可变参数的标记似乎已被贬低。但是,存在一个简单的基于表的解决方案,如下例所示:
function foo(...)
-- Collect the variable arguments in a table.
local args = {...}
for i, v in ipairs(args) do print(i, v) end
return
end
该行与旧版本 Lua 中函数内local args = {...}
的变量具有相同的行为。arg
我知道这会导致问题,但不确定具体是什么。所以我决定自己尝试一下。
我尝试了您示例中显示的函数,但出现堆栈溢出错误。
而且根据lua官方网站,
调用此函数时,其所有参数都收集在一个表中,该函数将其作为名为 arg 的隐藏参数进行访问。
所以我认为最好不要将参数称为“arg”