Asa Ayers
Asa Ayers

Reputation: 4894

in Lua, how can I use a table as varargs (...)?

strjoin accepts one string and then a variable number of arguments. I'm looking for a way to take a table with a variable number of arguments and use each item in the table as another argument.

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])

Upvotes: 11

Views: 7171

Answers (2)

Judge Maygarden
Judge Maygarden

Reputation: 27593

Use the unpack function:

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

Newer versions of Lua place the unpack function in the table module:

local myString = strjoin(' ', table.unpack(myTable))

This doesn't answer your question directly, but as lhf pointed out, the following is much more efficient:

local myString = table.concat(myTable, ' ')

Upvotes: 26

lhf
lhf

Reputation: 72312

Use table.concat instead of strjoin.

Upvotes: 6

Related Questions