如何在 Lua 中消除命令行和变量参数的歧义?

How to Disambiguate Command Line and Variable Arguments in Lua?

具体来说,Luajit。 我正在编写一个脚本作为学习练习,并尝试使用可变参数。但是,这样做只会打印 命令行 参数。我仔细检查了文档,确实,两个应用程序都使用了 arg 变量。

如何指定我想使用一个而不是另一个?

function init(...)
    for k,v in pairs(arg) do print(k,v) end
    -- Function body.
end

输出,

0   /.../lua_script.lua
-1  luajit

LuaJIT,源自 Lua 5.1,使用较新的可变参数语法,其中您手动将可变参数捕获到 table:

function init (...)
  local args = { ... }
  for k, v in pairs(args) do print(k, v) end
end

特殊的 arg 变量,在 LuaJIT 中,仅用于命令行参数。

查看 LuaJIT FAQ 中的第三项。