如何使用名称 C-API 创建 Lua table

How to create Lua table with name C-API

如何从 C-API 创建 Lua table,如下所示:

TableName = {a, b, c}

如何设置table名字?我只知道如何创建 table 和输入值,但不知道如何设置 table.

的名称

创建 table 没有名字的代码:

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");

你只需要在末尾添加这一行

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);