对于我的游戏,我试图通过 C++ 完成以下数组结构,因为数据来自外部源并且应该在 lua_script 中可用。
数组结构应该是这样的:(数据在一个映射中,映射包含变量的名称和一对列表(每一对是一个键值对,被认为是一个子数组中的一个元素)......
地图中准备的数据是完整的,结构绝对没问题。所以基本上我有
typedef std::map<std::string, std::list<std::pair> >;
/\index(e.g: sword) /\ /\
|| ||
|| Pair: Contains two strings (key/value pair)
||
List of Pairs for each array
items = {
["sword"] = {item_id = 1294, price = 500},
["axe"] = {item_id = 1678, price = 200},
["red gem"] = {item_id = 1679, price = 2000},
}
到目前为止,我得到的是:
for(ArrayMap::iterator it = this->npc->arrayMap.begin(); it != this->npc->arrayMap.end(); it++) {
std::string arrayName = (*it).first;
if((*it).second.size() > 0) {
lua_newtable(luaState);
for(ArrayEntryList::iterator itt = (*it).second.begin(); itt != (*it).second.end(); itt++) {
LuaScript::setField(luaState, (*itt).first.c_str(), (*itt).second.c_str());
}
lua_setglobal(luaState, arrayName.c_str());
}
}
但这只会生成以下结构:
(table)
[item_id] = (string) 2000
[name] = (string) sword
[price] = (string) 500
问题是表当然只能包含每个索引一次。那为什么我需要“一张桌子”之类的东西,这可能吗?
有没有办法做到这一点?我很高兴有任何提示。