我试图在Lua中调用一个接受多个'number'参数的函数
function addShape(x1, y1, x2, y2 ... xn, yn)
Run Code Online (Sandbox Code Playgroud)
我有一个值表,我想作为参数传递
values = {1, 1, 2, 2, 3, 3}
Run Code Online (Sandbox Code Playgroud)
是否有可能在函数调用中动态"解包"(我不确定这是否是正确的术语)这些值?就像是..
object:addShape(table.unpack(values))
Run Code Online (Sandbox Code Playgroud)
相当于调用:
object:addShape(1, 1, 2, 2, 3, 3)
Run Code Online (Sandbox Code Playgroud)
抱歉,如果这是一个完全明显的Lua问题,但我不能为我的生活找到关于这个主题的任何内容.
UPDATE
unpack(values)也不起作用(深入研究方法addShape(...)并检查传递的值的类型显示unpack导致单个string.
Joh*_*nck 24
你要这个:
object:addShape(unpack(values))
Run Code Online (Sandbox Code Playgroud)
另见:http://www.lua.org/pil/5.1.html
这是一个完整的例子:
shape = {
addShape = function(self, a, b, c)
print(a)
print(b)
print(c)
end
}
values = {1, 2, 3}
shape:addShape(unpack(values))
Run Code Online (Sandbox Code Playgroud)
HSL*_*SLM 16
无论谁来到这里并且拥有 Lua 版本 > 5.1 解包,都会被移至表库中,以便您可以使用:table.unpack
欲了解更多信息: https: //www.lua.org/manual/5.2/manual.html