2010-08-13 4 views
7

strjoin принимает одну строку, а затем переменное количество аргументов. Я ищу способ взять таблицу с переменным числом аргументов и использовать каждый элемент в таблице в качестве другого аргумента.в Lua, как я могу использовать таблицу как varargs (...)?

local myTable = { 
    'a', 
    'b', 
    'c', 
} 
-- This is what I want except that I don't want to hard code 
-- a specific number of parameters 

local myString = strjoin(' ', myTable[1], myTable[2], myTable[3]) 

ответ

17

Используйте unpack функцию:

local myString = strjoin(' ', unpack(myTable)) 
+0

Мне пришлось использовать 'table.unpack', а не просто' unpack'. Может быть разница версий. –

6

Использование table.concat вместо strjoin.

+0

Хотя технически вы правы, ваш ответ не был выбран, потому что я ищу решение, которое я могу применить и к некоторым другим подобным функциям. –

+1

@AsaAyers, тогда вам лучше найти/запросить функции devs, которые будут работать с таблицами, потому что ваша программа будет терпеть неудачу, если вы попробуете это с таблицей 200+ значений, так как она переполнит локальный стек Lua. –

Смежные вопросы