5

如何从 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");
4

1 回答 1

4

您只需要在最后添加这一行

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-16T14:31:06.393 回答