输出结构体:
这里算是一个嵌套的结构体了。
函数解释:
就是把表在lua堆栈中的值弹出来,index 是table 在堆栈中的位置,假如 table 在 -3,则key 应该是 -2,value 是 -1
相当于 table[key] = value.
例二:
在工作中这里我想用一个类似数组的table,类似 tableaname[n].x
代码:
static?int?luaGetBattleResultData(lua_State?*L_)??
- ????lua_newtable(L_);???
- ????int?i?=?1;???
- ????std::map<unsigned,?BattleResultDamageData>::const_iterator?map_it;??
- ????for?(map_it?=?SkillActObj::_BattleAtk.begin();?map_it?!=?SkillActObj::_BattleAtk.end();?++map_it,++i)???
- ????{??
- ????????lua_pushnumber(L_,i);??
- ????????lua_newtable(L_);??
- ????????lua_pushstring(L_,"id");??
- ????????lua_pushnumber(L_,map_it->first);??
- ????????lua_settable(L_,value,并设置到table里面去??
- ????????lua_pushstring(L_,"dmg");??
- ????????lua_settable(L_,-3);??
- "icon");??
- "lv");??
- "star");??
- "evo");??
- "pos");??
- "skin");??
- ????}??
- ????????return?1;??
- 在lua代码中的使用:
copy
local?buffAtk?=?_G.getBattleResultData();??
打印的buffAtk这个table结构体信息:
copy
<Info>0409-210505?654?Lookup?local?var?buffAtk??
- <Info>0409-210505?654?name?=?buffAtk???type?=?table????value?=?0CB685A0??
- <Info>0409-210505?654?name?=?buffAtk[1]????type?=?table????value?=?06CCEA58??
- <Info>0409-210505?670?name?=?buffAtk[1][dmg]???type?=?number???value?=?89298??
- <Info>0409-210505?670?name?=?buffAtk[1][skin]??type?=?number???value?=?0??
- <Info>0409-210505?670?name?=?buffAtk[1][star]??type?=?number???value?=?6??
- <Info>0409-210505?689?name?=?buffAtk[1][evo]???type?=?number???value?=?10??
- <Info>0409-210505?692?name?=?buffAtk[1][id]????type?=?number???value?=?25165827??
- <Info>0409-210505?693?name?=?buffAtk[1][lv]????type?=?number???value?=?131??
- <Info>0409-210505?693?name?=?buffAtk[1][icon]??type?=?number???value?=?1090??
- <Info>0409-210505?693?name?=?buffAtk[1][pos]???type?=?number???value?=?19??
- <Info>0409-210505?693?name?=?buffAtk[2]????type?=?table????value?=?0CC8C038??
- <Info>0409-210505?693?name?=?buffAtk[2][dmg]???type?=?number???value?=?28726??
- <Info>0409-210505?693?name?=?buffAtk[2][skin]??type?=?number???value?=?0??
- <Info>0409-210505?710?name?=?buffAtk[2][star]??type?=?number???value?=?6??
- <Info>0409-210505?711?name?=?buffAtk[2][evo]???type?=?number???value?=?12??
- <Info>0409-210505?711?name?=?buffAtk[2][id]????type?=?number???value?=?25165828??
- <Info>0409-210505?711?name?=?buffAtk[2][lv]????type?=?number???value?=?90??
- <Info>0409-210505?711?name?=?buffAtk[2][icon]??type?=?number???value?=?1325??
- <Info>0409-210505?711?name?=?buffAtk[2][pos]???type?=?number???value?=?51??
例三:
在lua中调用:
打印这两个table的信息:
copy
<Info>0409-212740?450?Lookup?local?var?buffDef??
- <Info>0409-212740?451?name?=?buffDef???type?=?table????value?=?0CDD1EB8??
- <Info>0409-212740?451?name?=?buffDef[1]????type?=?table????value?=?0CEEFCA8??
- <Info>0409-212740?451?name?=?buffDef[1][dmg]???type?=?number???value?=?1992??
- <Info>0409-212740?451?name?=?buffDef[1][skin]??type?=?number???value?=?0??
- <Info>0409-212740?466?name?=?buffDef[1][star]??type?=?number???value?=?1??
- <Info>0409-212740?466?name?=?buffDef[1][evo]???type?=?number???value?=?4??
- <Info>0409-212740?466?name?=?buffDef[1][id]????type?=?number???value?=?25165829??
- <Info>0409-212740?482?name?=?buffDef[1][lv]????type?=?number???value?=?85??
- <Info>0409-212740?482?name?=?buffDef[1][icon]??type?=?number???value?=?1005??
- <Info>0409-212740?482?name?=?buffDef[1][pos]???type?=?number???value?=?2??
- <Info>0409-212740?482?name?=?buffDef[2]????type?=?table????value?=?0CEED4D0??
- <Info>0409-212740?482?name?=?buffDef[2][dmg]???type?=?number???value?=?2941??
- <Info>0409-212740?482?name?=?buffDef[2][skin]??type?=?number???value?=?0??
- <Info>0409-212740?499?name?=?buffDef[2][star]??type?=?number???value?=?2??
- <Info>0409-212740?499?name?=?buffDef[2][evo]???type?=?number???value?=?6??
- <Info>0409-212740?499?name?=?buffDef[2][id]????type?=?number???value?=?25165830??
- <Info>0409-212740?499?name?=?buffDef[2][lv]????type?=?number???value?=?85??
- <Info>0409-212740?499?name?=?buffDef[2][icon]??type?=?number???value?=?1075??
- <Info>0409-212740?499?name?=?buffDef[2][pos]???type?=?number???value?=?16??
- <Info>0409-212740?499?name?=?buffDef[3]????type?=?table????value?=?0D0E83A0??
- <Info>0409-212740?516?name?=?buffDef[3][dmg]???type?=?number???value?=?308??
- <Info>0409-212740?519?name?=?buffDef[3][skin]??type?=?number???value?=?1??
- <Info>0409-212740?521?name?=?buffDef[3][star]??type?=?number???value?=?0??
- <Info>0409-212740?523?name?=?buffDef[3][evo]???type?=?number???value?=?6??
- <Info>0409-212740?523?name?=?buffDef[3][id]????type?=?number???value?=?25165831??
- <Info>0409-212740?523?name?=?buffDef[3][lv]????type?=?number???value?=?85??
- <Info>0409-212740?523?name?=?buffDef[3][icon]??type?=?number???value?=?1080??
- <Info>0409-212740?523?name?=?buffDef[3][pos]???type?=?number???value?=?17??
- <Info>0409-212740?523?name?=?buffDef[4]????type?=?table????value?=?0CD85A00??
- <Info>0409-212740?523?name?=?buffDef[4][dmg]???type?=?number???value?=?792??
- <Info>0409-212740?539?name?=?buffDef[4][skin]??type?=?number???value?=?0??
- <Info>0409-212740?539?name?=?buffDef[4][star]??type?=?number???value?=?0??
- <Info>0409-212740?539?name?=?buffDef[4][evo]???type?=?number???value?=?0??
- <Info>0409-212740?539?name?=?buffDef[4][id]????type?=?number???value?=?25165832??
- <Info>0409-212740?539?name?=?buffDef[4][lv]????type?=?number???value?=?85??
- <Info>0409-212740?539?name?=?buffDef[4][icon]??type?=?number???value?=?1145??
- <Info>0409-212740?539?name?=?buffDef[4][pos]???type?=?number???value?=?30??
- <Info>0409-212740?554?name?=?buffDef[5]????type?=?table????value?=?0C7CF7F8??
- <Info>0409-212740?554?name?=?buffDef[5][dmg]???type?=?number???value?=?1608??
- <Info>0409-212740?554?name?=?buffDef[5][skin]??type?=?number???value?=?0??
- <Info>0409-212740?554?name?=?buffDef[5][star]??type?=?number???value?=?2??
- <Info>0409-212740?554?name?=?buffDef[5][evo]???type?=?number???value?=?4??
- <Info>0409-212740?554?name?=?buffDef[5][id]????type?=?number???value?=?25165833??
- <Info>0409-212740?571?name?=?buffDef[5][lv]????type?=?number???value?=?47??
- <Info>0409-212740?574?name?=?buffDef[5][icon]??type?=?number???value?=?1090??
- <Info>0409-212740?577?name?=?buffDef[5][pos]???type?=?number???value?=?19??
- <Info>0409-212740?578???
看到这,是不是感觉哪里不对?是不是感觉代码好臃肿?
下面是最最终优化后的代码:
这下是不是感觉一下子少了好多?这就是代码的重用性!
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|