【问题标题】:How to Disambiguate Command Line and Variable Arguments in Lua?如何在 Lua 中消除命令行和变量参数的歧义?
【发布时间】:2018-08-23 22:39:44
【问题描述】:

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

如何指定何时使用其中一个而不是另一个?

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

输出,

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

【问题讨论】:

    标签: lua arguments luajit


    【解决方案1】:

    源于 Lua 5.1 的 LuaJIT 使用更新的可变参数语法,您可以手动将可变参数捕获到表中:

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

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

    查看LuaJIT FAQ中的第三项。

    【讨论】:

    • 哦,好吧!谢谢!那么 Lua 5.3 有新的实现方式了吗?
    • @LemmaPrism Err,实际上,经过仔细检查,看起来这种方式 较新的(5.1+)方式,而 arg 是旧方式。我认为...非常令人困惑,因为在线 PIL 已过时...
    • 哦,哈!嗯,这有点搞笑。很高兴知道 PIL 已过时...因此,Luajit 和 Lua5.1+ 都通过 arg 执行 CMD args,并通过 {...} 执行 varargs。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2014-02-11
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2019-12-19
    相关资源
    最近更新 更多