仅在命令行中使用Lua,使用...语法糖进行函数调用。

我已经使用了 Lua 和 Corona SDK 很长时间,但我只是刚刚下载了独立的 Lua 解释器(从命令行调用)。当我在 Mac 终端使用

lua main.lua

时,出于某种原因,任何使用 (...) 的函数都无法访问 arg 作为它们的 ... 参数;相反,arg 现在指向命令行参数。

我的问题是:是否有一种方法可以从命令行调用 Lua,并仍然拥有像

local function myFunction(...)
  print(arg[1])
end

这样的函数,它们指向自己的 ... 参数,而不是命令行参数?

点赞
用户1150918
用户1150918

关于将这些命令行参数保存在某个变量或表中的入口点怎么样?例如:

local function myFunction(...)
    print(cmd_arg)
end
-- 入口点:
local cmd_arg = arg[1]
myFunction()

或者将所有的命令行参数收集到表中:

local function myFunction(...)
    print(cmd_arg[1])
end

-- 入口点:
local cmd_args = {}
for _, cmd_arg in arg do
    table.insert(cmd_args, cmd_arg)
end
myFunction()

编辑:解决方法已在此提到:https://stackoverflow.com/a/9787126/1150918

自5.1起,arg似乎已经被弃用。

Michal Kottman的解决方案是:

function debug(name, ...)
    local arg = table.pack(...)
    print(name)
    for i=1,arg.n do
        print(i, arg[i])
    end
end
2013-11-07 18:05:51