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

时间:2013-06-17 03:42:06

标签: c++ lua

Lua表可以将表作为键,例如:

a = {[{}]=true}

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

lua_getfield(L, -1, variablename);

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

2 个答案:

答案 0 :(得分:4)

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,并希望一个类型为“桌子”的钥匙是你正在寻找的钥匙。

答案 1 :(得分:0)

我想说你需要用lua_next迭代表。 此链接描述了该过程:http://pgl.yoyo.org/luai/i/lua_next

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