Lua表可以将表作为键,例如:
a = {[{}]=true}
我想知道如何从lua C ++ api中索引这个。例如,我可以这样做:
lua_getfield(L, -1, variablename);
获取堆栈上表的字符串键值。如何将表值键放入堆栈?
答案 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。
调查迭代表并确定它是否是您要搜索的表。