1

Lua tables can have a table as a key, for instance:

a = {[{}]=true}

I'm wondering how I can index this from the lua C++ api. For instance, I can do:

lua_getfield(L, -1, variablename);

To get a string key'd value of a table on the stack. How would I put a table-valued key onto the stack?

4

2 回答 2

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 表,而没有将对该表的引用交给您或在全局范围内存储引用,那么您将被淹没。

那么,您唯一的办法就是遍历表,lua_next并希望类型为“表”的键是您要查找的键。

于 2013-06-17T04:25:20.470 回答
0

我会说你需要用lua_next. 这个链接描述了这个过程: http: //pgl.yoyo.org/luai/i/lua_next

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

于 2013-06-17T05:46:37.670 回答