Вы можете захватить все возвращаемые значения в таблице:
local rv = { SomeFunction() }
print('SomeFunction returned', #rv, 'values')
for i,val in ipairs(rv) do
print(i,val)
Или обработать их, используя список переменных параметров:
function DoSomething(...)
local nargs = select('#', ...)
print('Received', nargs, 'arguments')
for i=1,nargs do
print(i,select(i,...))
end
DoSomething(SomeFunction())
Конечно, ваша функция C должна, вероятно, простовернуть таблицу Lua, содержащую элементы списка.Я не знаком с LuaPlus, но, судя по документации здесь , вы захотите что-то вроде этого:
int LS_SomeFunction(LuaState* state)
{
LuaObject table;
table.AssignNewTable(state, mySet.size()); // presize the array portion
int i = 1;
for(set<int>::iterator it = mySet.begin(); it != mySet.end(); ++it)
table.SetNumber(i++, *it);
table.PushStack();
return 1;
}
Тогда вы просто скажете:
local rv = SomeFunction()
print('SomeFunction returned', #rv, 'values')