调用具有可变长度参数的函数

时间:2011-05-22 08:44:24

标签: lua

在我的lua脚本中,我需要调用一个函数,该函数带有一个具有一定数量的参数,以及任意数量的参数......

我正在建立我的论据作为一个表,因为我不知道会有多少论点。

示例代码:

local result = call.someFunc();
local arguments = {}

for k,v in pairs(result) do
    table.insert(arguments, v.name)
end

-- here I would like to somehow pass the whole table and each item in the table
-- is then passed as a single argument to "someOtherFunc"
call.someOtherFunc(arguments[1], arguments[2], arguments[3] ....) 

我很熟悉lua,在PHP e。 G。我会用call_user_func_array - 在lua中有类似的东西吗?

3 个答案:

答案 0 :(得分:12)

foo(unpack(arguments))相当于foo(arguments[1], arguments[2], ...)

答案 1 :(得分:3)

The long answer可以在Lua用户的Wiki上找到。

这包括所有内容,包括尾随nil参数。

答案 2 :(得分:0)

只需将表作为参数传递即可。无需将其拆分为单个参数,只需将函数循环遍历表。