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

BOR*_*VIK 5 lua lua-c++-connection lua-api lua-table

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

TableName = {a, b, c}
Run Code Online (Sandbox Code Playgroud)

如何设置表名?我只知道如何创建表和put值,但不知道如何设置表的名称.

创建没有名称的表的代码:

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");
Run Code Online (Sandbox Code Playgroud)

lhf*_*lhf 4

您所需要的只是在末尾添加这一行

lua_setglobal(L, "TableName");
Run Code Online (Sandbox Code Playgroud)

但是,您的 C 代码并不等同于您的 Lua 代码。C代码对应于这个Lua代码:

TableName = { a=1, b=2, c=3 }
Run Code Online (Sandbox Code Playgroud)

如果你想要相当于的 C 代码

TableName = {"a", "b", "c"}
Run Code Online (Sandbox Code Playgroud)

使用

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);
Run Code Online (Sandbox Code Playgroud)