2013-05-29 4 views
5

При написании функции C, которая подталкивает таблицу в стек как возвращаемое значение к вызывающему абоненту Lua, что он должен возвращать в контексте C? Я знаю, что вы должны вернуть количество значений, которые вы передаете обратно вызывающему абоненту Lua, но в случае таблицы это 1 для ссылки на таблицу или вам нужно учитывать содержимое таблицы?Что должна вызывать функция C из Lua, которая возвращает таблицу?

Способ перехода назад таблицу я использую это показано в «Pushing a Lua Table.»

+1

Я говорю это без предварительного опыта с lua; однако, прочитав это: http://lua-users.org/wiki/TablesTutorial, кажется, что таблицы lua передаются по ссылке; поэтому я предполагаю, что ответ будет 1; потому что вы просто передаете ссылку вокруг –

ответ

6

Вы только возвращение одного значения Lua напрямую, так что ваша функция C должна возвращать 1.

Что-то вроде этого:

int my_table(luaState * L) { 
    lua_newtable(L); 
    lua_pushstring(L, "a_key"); 
    lua_pushstring(L, "a_value"); 
    lua_settable(L, -3); 
    return 1; 
} 
Смежные вопросы