zoukankan      html  css  js  c++  java
  • lua 遍历 table

    Lua常用的4中遍历方式

    复制代码
    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的时候就结束不再遍历,无论后面是否仍然是顺序的key for 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 end

    for key, value in pairsByKeys(tbtestAward) do     
     if nSeq <= key then         
      return key     
     end 
    复制代码
  • 相关阅读:
    基于SUSE Linux做NFS文件挂载
    Java实现蓝桥杯调和级数
    Java实现蓝桥杯调和级数
    Java实现分割矩形
    Java实现分割矩形
    Java实现分割矩形
    Java实现分割矩形
    Java实现分割矩形
    Java实现九阶数独
    Java实现九阶数独
  • 原文地址:https://www.cnblogs.com/liuqing0328/p/4818681.html
Copyright © 2011-2022 走看看