Lua中将数组作为参数列表传递

9
今天我在使用lua进行一些工作,这是我比较"老旧"的语言之一。我发现你可以像数组一样获取参数,如下所示:
function foo(someting,...)
    local arrayofargs = arg
    -- code here
end

现在,我很感兴趣。那能不能用“其他方式”呢?你能传递数组,但不是作为数组,而像参数列表一样,就像这样:

function bar(a1,a2)
    print(a1+a1)
end

function foo(someting,...)
    local arrayofargs = arg
    bar(arg)
end

是的,你不能这样做。但是我能以某种方式做类似的事情吗?
1个回答

9
如果您谈论的是旧版Lua提供了一个自动arg,其中包含vararg函数接收到的所有参数,那么您只需要在函数开头加上local arg={...}即可。
如果您想将数组转换为列表,请使用table.unpack
因此,您的示例将如下所示:
function foo(someting,...)
    local arg={...}
    bar(table.unpack(arg))
end

但这并没有太多意义,因为你可以使用更清晰和简单的方法来实现:
function foo(someting,...)
    bar(...)
end

哦,那样可以……那太好了 =)我会尝试的。编辑:非常好用,谢谢!编辑2:在Google上搜索了unpack,发现可以传递i和j——你想要发送的参数的开始和结束。这更好了! - fhntv24

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