如何使用C-API创建Lua表

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");

1
为了清晰起见,您正在询问一个名为TableName的变量。像任何Lua值一样,表没有名称。 - Tom Blodget
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);

谢谢。我该如何在表格中设置表格?像这样 a = {["b"] = {["c"] = {["d"] = {["e"] = "GOOD"}}}}?打印(a.b.c.d.e); - BORSHEVIK
https://dev59.com/V5jga4cB1Zd3GeqPFBMu - BORSHEVIK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接