Lua常用的4中遍历方式

来源:互联网 发布:软件企业认定多久 编辑:程序博客网 时间:2024/06/12 01:23
for key, value in pairs(tbtest) do          XXX  end  这样的遍历顺序并非是tbtest中table的排列顺序,而是根据tbtest中key的hash值排列的顺序来遍历的。for key, value in ipairs(tbtest) do          XXX  end   这样的循环必须要求tbtest中的key为顺序的,而且必须是从1开始,ipairs只会从1开始按连续的key顺序遍历到key不连续为止。for i=1, #(tbtest) do          XXX  end  这种遍历,只能遍历当tbtest中存在key为1的value时才会出现结果,而且是按照key从1开始依次递增1的顺序来遍历,找到一个递增不是1的时候就结束不再遍历,无论后面是否仍然是顺序的keyfor i=1, table.maxn(tbtest) do          XXX  end这种效率太低了


推荐的方法:

--迭代器function pairsByKeys(t)          local a = {}          for n in pairs(t) do                  a[#a+1] = n          end          table.sort(a)          local i = 0          return function()              i = i + 1              return a[i], t[a[i]]          end  endfor key, value in pairsByKeys(tbtestAward) do       if nSeq <= key then            return key       end  
0 0
原创粉丝点击