вызвать функцию с переменной длиной аргументов

В моем 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. грамм. Я бы использовал call_user_func_array — есть ли что-то подобное в lua?


lua
person Max    schedule 22.05.2011    source источник


Ответы (3)


foo(unpack(arguments)) эквивалентно foo(arguments[1], arguments[2], ...).

person rkhayrov    schedule 22.05.2011
comment
Спасибо! Это сработало. Я приму этот ответ, как только система позволит мне. ;-) - person Max; 22.05.2011

Длинный ответ можно найти на вики пользователей Lua.

Это охватывает все, включая конечные аргументы nil.

person finnw    schedule 22.05.2011

Просто передайте таблицу в качестве аргумента. Не нужно разбивать его на отдельные аргументы, просто запустите функцию в цикле по таблице.

person jhocking    schedule 23.05.2011