如何使用名称 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);
如何从 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);