вызвать функцию с переменной длиной аргументов - PullRequest
3 голосов
/ 22 мая 2011

В моем скрипте 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?

Ответы [ 3 ]

12 голосов
/ 22 мая 2011

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

3 голосов
/ 22 мая 2011

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

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

0 голосов
/ 23 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...