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/