2010-08-13 14 views
7

strjoin przyjmuje jeden ciąg, a następnie zmienną liczbę argumentów. Szukam sposobu, aby wziąć tabelę ze zmienną liczbą argumentów i użyć każdego elementu w tabeli jako innego argumentu.w Lua, jak mogę użyć tabeli jako 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]) 

Odpowiedz

17

Użyj unpack funkcję:

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

Musiałem użyć 'table.unpack' zamiast po prostu' unpack'. Może być różnica w wersji. –

6

Korzystając table.concat zamiast strjoin.

+0

Chociaż pod względem technicznym masz rację, twoja odpowiedź nie została wybrana, ponieważ szukam rozwiązania, które mogę również zastosować do innych podobnych funkcji. –

+1

@AsaAyers, wtedy lepiej znajdź/poproś o funkcje programistów, które działałyby z tabelami, ponieważ Twój program zawiedzie po wypróbowaniu tego z tabelą o wartości ponad 200, ponieważ spowoduje przepełnienie lokalnego stosu funkcji Lua. –

Powiązane problemy