如何使用 C-API 创建 Lua 表

如何使用 C-API 创建下面这样的 Lua 表:

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");
点赞
用户107090
用户107090

只需要在末尾添加以下代码:

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);
2016-06-16 14:31:06