gpt4 book ai didi

c++ - Lua 访问表的键和值

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:30 24 4
gpt4 key购买 nike

我想在关卡编辑器中读取一个 Lua 文件,这样我就可以以可视化格式显示它的数据供用户编辑。

如果我有一个像这样的 Lua 表:

properties = {
Speed = 10,
TurnSpeed = 5
}

Speed 显然是关键,10 是值(value)。我知道如果我像这样知道键就可以访问该值(前提是表已经在堆栈中):

lua_pushstring(L, "Speed");
lua_gettable(L, idx);
int Speed = lua_tointeger(L, -1);
lua_pop(L, 1);

我想做的是在 C++ 中访问键的名称和相应的值。这可以做到吗?如果是这样,我该怎么做?

最佳答案

这包含在 lua_next function 中,它遍历表的元素:

// table is in the stack at index 't'
lua_pushnil(L); // first key
while (lua_next(L, t) != 0)
{
// uses 'key' (at index -2) and 'value' (at index -1)
printf("%s - %s\n", luaL_typename(L, -2), luaL_typename(L, -1));
// removes 'value'; keeps 'key' for next iteration
lua_pop(L, 1);
}

lua_next 键脱离了表的键,因此您需要在迭代时将其保存在堆栈中。每次调用都会跳转到下一个键/值对。一旦它返回 0,那么你就完成了(当键被弹出时,下一个键没有被按下)。

显然,向要迭代的表中添加或删除元素可能会导致问题。

关于c++ - Lua 访问表的键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12441593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com