c++ - 在 lua C++ 中访问由表键索引的表

标签 c++ lua

Lua 表可以有一个表作为键,例如:

a = {[{}]=true}

我想知道如何从 lua C++ api 中索引它。例如,我可以这样做:

lua_getfield(L, -1, variablename);

获取堆栈中表的字符串键值。我如何将表值键放入堆栈?

最佳答案

lua_getfield只不过是您可以自己执行的一系列命令的语法糖:

lua_pushstring(L, variablename);
lua_gettable(L -1 - 1);  //The second minus one represents the fact that your table is actually one index below the top now.

您将 key 压入堆栈,然后使用 lua_gettable 访问它。这是真的不管它是什么类型的 key 。

您必须回答的唯一问题是首先如何真正获得该 key 。为此……你只能靠自己了。每个 Lua 表与其他每个 Lua 表都有不同的值。如果您的 Lua 脚本只是像那样在键中塞入了一个新创建的 Lua 表,而没有将对该表的引用传递给您或在全局范围内存储引用,那么您就完蛋了。

那么你唯一的办法就是 iterate through the table with lua_next并希望类型为“table”的键是您要查找的键。

关于c++ - 在 lua C++ 中访问由表键索引的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17140112/

相关文章:

c++ - 在 C++ 中读取 PPM 图像缺少最后一个像素

c++ - 静态库和项目中的相同文件

android - ndk-stack 获取不到全栈

C++ 对齐数组的未对齐属性

dictionary - ngx.shared.DICT 使用安全吗?

function - 卢阿: passing parameter to other function problem

如果前端 Tomcat 被终止,C++ 服务器将终止。错误 "Received untrapped signal [13] - SIGPIPE"

lua - 通过 Lua 脚本重启系统

c++ - 如何使用可变参数模板制作通用的 Lua 函数包装器?

c - 实现 Lua SHA256 RFC-2104 兼容 HMAC 签名的最快路径?