Lua возвращает несколько значений в качестве аргументов

У меня есть функция (которую я не могу изменить), возвращающая несколько значений:

function f1()
    ...
    return a, b
end

и другая функция (которую я не могу изменить), принимающая несколько аргументов:

function f2(x, y, z)
    ...
end

Есть ли способ сделать:

f2(f1(), c)

а х быть а, у быть б и г быть с?

3 ответа

Решение

Вы не можете сделать это в одну строку, потому что f2(f1(),c) корректирует результаты, возвращаемые f1 на одно значение.

Вы могли бы использовать промежуточные результаты

local a, b = f1()
f2(a, b, c)

Вы можете использовать таблицу в качестве помощника:

tbl={f1()}
tbl[3]=c
f2(unpack(tbl))
Другие вопросы по тегам