你好!!我叫兔子今天是lua课程一切都请自己实践如果你不亲自动手,你肯定不知道到底怎么用今天讲迭代循环,注意!!!本期部分属于lua参考手册中知识我语言不好但是我会尽我最大的努力去帮助你们理解迭代函数gg虽然有自己的函数,但依然有很多lua的东西比如今天要讲的,就是我们可以在lua的参考手册中看到的 -----知识区------ ipairs (t)返回三个值(迭代函数、表t以及0)如此,以下代码for i,v in ipairs(t) do body end将迭代键值对(1,t[1]),(2,t[2]), .. ,直到第一个空值。 pairs (t)如果 t 有元方法 _pairs,以t为参数调用它,并返回其返回的前三个值否则,返回三个值:next函数,表t,以及nil因此以下代码for k,v in pairs(t) do body end能迭代表t中的所有键值对。-----萌新区-----首先很多萌新觉得这个似乎没有怎么见过(仅指萌新)那问题就来了!!?今天要讲的这个有什么用呢?我觉得比较普遍的用在游戏上的用法就是给你所有搜索出来,并且达到某种条件的结果进行某种条件(这里注意是所有!!)你可以想一想如果是三个或者四个结果需要偏移这个你可以挨个写一遍偏移函数那如果是几十个几百个呢?那还要每个结果都写函数吗?(这就可以用循环)当然循环可以用ipairs,pairs--这两个是迭代函数,请记住还可以是while(本期不讲这个)-----例子与简单演习-----for i,v in ipairs() do例子①(随手写的)t={"兔子1号", "兔子2号", "兔子3号", "兔子4号"}for i,v in ipairs(t) doprint(i,v.."\n")end输出结果:1 兔子1号2 兔子2号3 兔子3号4 兔子4号--你看这个就是有顺序的将这个表给打印下来了例子②gg.searchNumber("4",4)t = gg.getResults(2)for i,v in ipairs(t) dogg.setValues({[1] = {address=t[i].address+0x8,flags=4,value=6}})end例子③gg.searchNumber("4",4)t = gg.getResults(3)for i,v in ipairs(t) dov.address=t[i].address+0x8v.flags="4"v.value="521"gg.setValues({v})end那接下来讲一下没有顺序的就是没有顺序的循环pairs()例子①t={["兔子1号"]=1, ["兔子2号"]=2, ["兔子3号"]=3, ["兔子4号"]=4}for k,v in pairs(t) doprint(k,v.."\n")end输出结果兔子3号 3兔子1号 1兔子2号 2兔子4号 4这里可以看到,每次输出结果都是不一样的例子②gg.searchNumber("4",4)t = gg.getResults(3)for k,v in pairs(t) dov.address=t[k].address+0x8v.flags="4"v.value="521"print(v)end这里用到了和ipairs一样的例子会有什么不一样的效果呢?结果实际是一样的但结果是一样!过程呢?都说了这个是打乱顺序的循环,懂了吧
举报 0