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

Access a table indexed by a table key in lua C++

本文关键字:索引 访问 lua c++      更新时间:2023-10-16

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.

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

你要回答的唯一问题是如何首先得到那个键。为……你得靠自己了。每个Lua表都有不同于其他Lua表的值。如果你的Lua脚本只是像这样在键中插入了一个新创建的Lua表,而没有向你传递对表的引用或全局存储引用,那么你就完了。

你唯一的追索权是只是通过表与lua_next迭代,并希望一个键谁的类型是"表"是你正在寻找的键。

我认为您需要使用lua_next迭代表。这个链接描述了这个过程:http://pgl.yoyo.org/luai/i/lua_next.

检查迭代表,并确定它是否是您要搜索的。