如何使用 Lua C Api 创建一个多维 Lua 表?

嗨,我想使用 Lua C Api 创建类似于以下 Lua 表的 Lua 表

table={['key1']={5,4,3,2},['key2']={1,0,1,1,0},['key3']={0,10,0,30,0,50}}

提前致谢....

原文链接 https://stackoverflow.com/questions/70941825

点赞
stackoverflow用户107090
stackoverflow用户107090

我的lua2c给出了以下代码:

lua_newtable(L);
lua_pushliteral(L,"key1");
lua_newtable(L);
lua_pushnumber(L,5);
lua_pushnumber(L,4);
lua_pushnumber(L,3);
lua_pushnumber(L,2);
lua_rawseti(L,-5,4);
lua_rawseti(L,-4,3);
lua_rawseti(L,-3,2);
lua_rawseti(L,-2,1);
lua_pushliteral(L,"key2");
lua_newtable(L);
lua_pushnumber(L,1);
lua_pushnumber(L,0);
lua_pushnumber(L,1);
lua_pushnumber(L,1);
lua_pushnumber(L,0);
lua_rawseti(L,-6,5);
lua_rawseti(L,-5,4);
lua_rawseti(L,-4,3);
lua_rawseti(L,-3,2);
lua_rawseti(L,-2,1);
lua_pushliteral(L,"key3");
lua_newtable(L);
lua_pushnumber(L,0);
lua_pushnumber(L,10);
lua_pushnumber(L,0);
lua_pushnumber(L,30);
lua_pushnumber(L,0);
lua_pushnumber(L,50);
lua_rawseti(L,-7,6);
lua_rawseti(L,-6,5);
lua_rawseti(L,-5,4);
lua_rawseti(L,-4,3);
lua_rawseti(L,-3,2);
lua_rawseti(L,-2,1);
lua_settable(L,-7);
lua_settable(L,-5);
lua_settable(L,-3);
lua_setglobal(L,"table");

这段自动生成的代码将设置表项推迟到最后;虽然尽可能早地设置表项可能更易读,但需要仔细调整索引。

2022-02-01 14:22:29