Как создать таблицу Lua с именем C-API

Как создать таблицу Lua из C-API следующим образом:

TableName = {a, b, c}

Как установить имя таблицы? Я только знаю, как создать таблицу и поставить значения, но не знаю, как установить имя таблицы.

Код для создания таблицы без имени:

lua_createtable(L, 0, 3);

lua_pushnumber(L, 1);
lua_setfield(L, -2, "a");

lua_pushnumber(L, 2);
lua_setfield(L, -2, "b");

lua_pushnumber(L, 3);
lua_setfield(L, -2, "c");

1 ответ

Решение

Все, что вам нужно, это добавить эту строку в конце

lua_setglobal(L, "TableName");

Однако ваш C-код не эквивалентен вашему Lua-коду. Код C соответствует этому коду Lua:

TableName = { a=1, b=2, c=3 }

Если вы хотите, чтобы C-код эквивалентен

TableName = {"a", "b", "c"}

использование

lua_pushliteral(L, "a"); lua_rawseti(L, -2, 1);
lua_pushliteral(L, "b"); lua_rawseti(L, -2, 2);
lua_pushliteral(L, "c"); lua_rawseti(L, -2, 3);
Другие вопросы по тегам