【发布时间】:2013-02-24 22:43:05
【问题描述】:
我想从 Lua 代码中调用一些 C++ 函数并在参数中传递 Lua 表,如下所示:
call_cpp_function_from_lua({ x = 10, y = 20 })
在call_cpp_function_from_lua 中,我想获取并使用迭代器用于 Lua 表的 C++ 表示,如下所示:
std::map<boost::variant<LuaTypesList>, boost::variant<LuaTypesList>>::iterator it = getLuaTableBegin();
我可以使用 C API 来完成,但它很乏味且容易出错,请参阅 Iterating through a Lua table from C++?。
【问题讨论】:
-
您可以在lua-users.org/wiki/IteratorsTutorial中看到使用迭代器的不同示例
-
@user1929959:他的意思是 C++ 迭代器,而不是 Lua 迭代器。
-
"但它很乏味且容易出错" 您将不得不以一种或另一种方式编写该代码。除非你要求图书馆。 C++ 迭代器为您做的唯一一件事就是将它包装在一个特定的接口中。该接口的实现是困难的部分。
-
Luabind 可以做到这一点。我不确定这是否是一个真正的答案,最初的维护者已经决定在一段时间内不再继续这个项目,所以例如您可能需要在某些配置中对其进行修补(GCC + Boost IIRC 的最新版本)。它提供的不仅仅是将数据编组到 Lua 和从 Lua 传出。
-
@Nicol Bolas:是的,我问的是带有 C++ 迭代器接口的库,它可以隐藏 Lua C API 中的迭代细节。
标签: c++ lua iterator lua-table