在Lua解释器中获取命令行参数

3

如何在Lua中调用函数? 我是Lua的新手,不知道如何做一些非常简单的事情。我编写了一个test.lua并使其可执行。在其中我放置了以下内容:

function Double(n)
 return 2*n
end

print(Double(15))

如果我调用 `test.lua`,它将返回30,表示成功。
现在,如果我删除了 `print` 行,并且希望通过以下方式调用该函数:
test.lua 15

它没有起作用。如何在命令行或Lua shell中调用函数而不硬编码第一个参数?


1
这与调用函数无关。你说的是如何从命令行获取参数。你不能从Lua的命令行调用函数;你可以获取参数,然后决定如何处理它们。 - Nicol Bolas
2个回答

5
你可以向脚本传递一个参数,该参数将出现在arg全局变量中。
例如:
function Double(n)
 return 2*n
end

print(Double(arg[1]))

http://www.lua.org/pil/1.4.html


更新:Lua 已经在许多地方以许多形式爆发,甚至在某些情况下可能会被模拟或覆盖,因此请务必小心并确保您的环境实际上具有 arg。一些环境选择不公开它,而其他环境则会这样做。在 arg 不可用的情况下,通常可以退回到 arg = { ... }。像往常一样,请务必阅读 Lua 环境的具体文档,因为它们可能会有很大的差异。如果您不确定要开始的好地方是什么,那么一个很好的起点就是 Zeal 的主人!这里是 https://zealdocs.org。 - osirisgothra

3
您可以使用...来获取命令行参数:
local input = ...
if input then
  local Double
  Double = function(input)
    return 2 * input
  end
  return print(Double(input))
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接