Vararg (`...`) 函数参数不适用于 `arg` 变量

Vararg (`...`) function parameters don't work with `arg` variable

对于lua,根据本教程,函数的三重点可以通过名为 arg 的隐藏变量访问。

https://www.lua.org/pil/5.2.html

我写了一个很简单的程序

require 'torch'
function triDot(...)
    print('in triDot now')
    print(arg)
    for i,v in ipairs(arg) do
        print('i is',i,'v is',v)
    end
end
triDot('name1','name2') 

事实证明,arg 根本不包含 {'name1', 'name2'},而是一堆系统参数。 For 循环不产生任何结果。

{ 0:“/home/jun/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th” -2:“-e” -5:“/home/jun/torch/install/bin/luajit” -3 : "package.path="/home/jun/.luarocks/share/lua/5.1/?.lua;/home/jun/.luarocks/share/lua/5.1/?/init.lua;/home/jun/torch/install/share/lua/5.1/?.lua;/home/jun/torch/install/share/lua/ 5.1/?/init.lua;"..package.path;package.cpath="/home/jun/.luarocks/lib/lua/5.1/?.so;/home/jun /torch/install/lib/lua/5.1/?.so;"..package.cpath" -4:“-e” -1 : "local k,l,_=pcall(require,"luarocks.loader") _=k 和 l.add_context("trepl","scm-1")" }

有人可以帮忙吗?

arg 不适用于 Lua 5.1+ 中的函数参数(它可以在 5.1 中使用一些兼容性选项打开;它只适用于脚本参数)。您需要使用 local arg = {...} 将函数参数分配给 table 或使用 select(i, ...) 从列表中获取第 i 个参数,并使用 select('#', ...) 获取参数的数量。前者更简单,但后者选项可以处理传递参数中的 nil 值,因此如果您期望 nil 值,请使用它。