Lua оператор распространения по массиву - PullRequest
0 голосов
/ 23 мая 2018

Есть ли у lua оператор распространения, когда вы передаете переменную в функцию?

Например, у меня есть массив a, и я хочу передать его другой функции, скажем, string.format.Если я просто наберу string.format(a), то получу

bad argument #1 to 'format' (string expected, got table)

Я попытался local f, e = pcall(string.format, t) без удачи.

1 Ответ

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

Kousha.Я возился и наткнулся на функцию, которая может вас заинтересовать.

В версии 5.1 Lua unpack была доступна как глобальная функция.В 5.2 они переместили его в table.unpack, что имеет гораздо больше смысла.Вы можете вызвать эту функцию, используя что-то вроде следующего.string.format принимает только одну строку , если вы не добавите больше вещей в параметр формата .

-- Your comment to my question just made me realize you can totally do it with unpack.
t = {"One", "Two", "Three"};
string.format("%s %s %s", table.unpack(t)); -- One Two Three

-- With your implementation,
-- I believe you might need to increase the length of your args though.
local f = "Your table contains ";
for i = 1, #t do
    f.." %s";
end
string.format(f, table.unpack(t));
...