C LUA API - 获取表中索引处的值

5
假设以下是Lua代码:
local FooTable={ ["FooKey"]="FooValue" }
< p >""FooValue"的索引是"FooKey"。所以我可以像这样访问它,而不会有任何问题(假设FooTable在堆栈顶部)。"< /p >
lua_getfield(L, -1, "FooKey");

当我尝试像这样做时:

local FooTable={ "FooValue" }

我会假设 "FooValue" 的索引是 "1"。但是下面的代码却返回了 nil
lua_getfield(L, -1, "1");

在表格中访问数字键是否有特殊方法?
1个回答

6
在第二种情况下,索引是数字1,而不是字符串"1"。
获取第一个元素的一种方法是使用以下函数:
void lua_rawgeti (lua_State *L, int index, int key);

另一种方法是将一个键推入堆栈并调用:
void lua_gettable (lua_State *L, int index);

第一种方式不会触发元方法,而第二种方式可能会。

谢谢,这个可行。最终结果应该是这样的:lua_pushnumber(L, 1); lua_gettable(L, -2); - Grapes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接