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
值,请使用它。
对于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
值,请使用它。