C++ にはmap<string, string>
、不明な数のエントリを含む があります。Lua関数がデータをテーブルとして使用できるように、これをLua関数に渡すにはどうすればよいですか?
11545 次
2 に答える
19
実際の 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);
}
マップの適切なタイプを..に置き換えます。
于 2009-01-19T22:32:58.997 に答える
5
いくつかのオプション...
マップを新しいLuaテーブルにコピーし、Luaテーブルを渡します。
メタテーブルとメタメソッドを介して読み取りと書き込みを指示するプロキシテーブルを作成します
__index
__newindex
もちろん、(1)の欠点はすべてのコピーです。
(2)の欠点はpairs()
、プロキシテーブルでは機能しないことです。
一般化のためのLuaの修正についての議論はpairs
、wikiとこのメーリングリストスレッドにあります。Lua5.2では一般化pairs
が期待されています
于 2009-01-17T18:43:30.780 に答える