对于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'}。 对于循环没有产生任何
{ 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 =”/家庭月/ 6 / .luarocks / lib中/ LUA / 5.1 /?左右; /home/jun/torch/install/lib/lua/5.1 /?左右; “.. package.cpath” -4:“ - e” -1:“local k,l,_ = pcall(require,”luarocks.loader“)_ = k和l.add_context(”trepl“,”scm-1“)” }
有人可以帮忙吗?
答案 0 :(得分:3)
arg
不适用于Lua 5.1+中的函数参数(它可以在5.1中启用一些兼容性选项;它仅适用于脚本参数)。您需要使用local arg = {...}
将函数参数分配给表,或使用select(i, ...)
从列表中获取第i个参数,并select('#', ...)
获取参数数量。前者更简单,但后一个选项可以处理传递参数中的nil
值,因此如果您期望nil
值,请使用它。