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

时间:2016-06-16 13:11:21

标签: lua lua-table lua-api lua-c++-connection

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

1 个答案:

答案 0 :(得分: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);