lua基础问题



  • local tt =
    {
        [1] = "a",
        [4] = "b",
        [5] = "c"
    }
     
    for i,v in pairs(tt) do      
        print( tt[i] )
    end
    
    这个输出为什么是:
    b  a  c 
    而不是  a b c


  • 这个和lua table的实现有关
    table默认有2种结构, 如果只有符合数组的形式(就是key必须是整数并且从1开始顺序按步长为1递增, 中间不允许间断), pairs会按照数组的形式去遍历. 其余情况全部按照hash的方式, hash情况下key是无序的
    如果要强制按照数组形式遍历, 只能用ipairs. 他会强制按照数组的方式遍历.



  • 这个和lua table的实现有关
    table默认有2种结构, 如果只有符合数组的形式(就是key必须是整数并且从1开始顺序按步长为1递增, 中间不允许间断), pairs会按照数组的形式去遍历. 其余情况全部按照hash的方式, hash情况下key是无序的
    如果要强制按照数组形式遍历, 只能用ipairs. 他会强制按照数组的方式遍历.



  • 如果是Key-Vlue类型的数据(dict,map)相关的,你默认它遍历的顺序是随机的就好啦,它们本身就是无序的;有序的话主要还是List。


Log in to reply