【发布时间】:2013-06-17 03:42:05
【问题描述】:
Lua 表可以有一个表作为键,例如:
a = {[{}]=true}
我想知道如何从 lua C++ api 索引它。例如,我可以这样做:
lua_getfield(L, -1, variablename);
获取堆栈上表的字符串键值。如何将表值键放入堆栈?
【问题讨论】:
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 表,而没有将对该表的引用交给您或在全局范围内存储一个引用,那么您就完蛋了。
那么你唯一的办法就是iterate through the table with lua_next,并希望类型为“table”的键是你正在寻找的键。
【讨论】:
我会说您需要使用lua_next 迭代表。
这个链接描述了这个过程:http://pgl.yoyo.org/luai/i/lua_next。
调查迭代表并确定它是否是您要搜索的表。
【讨论】: