在C++中,我有一个map
,包含未知数量的条目.如何将其传递给Lua函数,以便Lua函数可以将数据用作表格?
如果你想要一个真正的lua表:
lua_newtable(L); int top = lua_gettop(L); for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) { const char* key = it->first.c_str(); const char* value = it->second.c_str(); lua_pushlstring(L, key, it->first.size()); lua_pushlstring(L, value, it->second.size()); lua_settable(L, top); }
使用正确的地图类型替换为..
几个选项......
将地图复制到新的Lua表中,并传递Lua表.
创建一个代理表,通过metatable __index
和__newindex
metamethods 指导读取和写入
当然,(1)的缺点是所有的复制.
(2)的缺点是pairs()
不能在代理表上工作
关于Lua for generalized的修复的讨论pairs
是在wiki和这个邮件列表线程中.pairs
预计Lua 5.2将被推广