pair和ipairs总结

一、区别

pairs()函数可以遍历整个table,即包括数组和非数组部分;

ipairs()函数只用于遍历 table中的数组部分。


二、举例

   1)

  1. local tabFiles = {  
  2.  "a",  
  3.  "b",  
  4. [4] = "c" ,           --正好3,4连着,如果后二者为7,8,则iparis只输出前两个
  5. [3] = "d"
  6. }  
  7.    
  8. for k, v in ipairs(tabFiles) do  
  9. print(k, v)  
  10. end 

  输出:                             如果换成pairs:
           1        a                                               1          a
           2        b                                               2          b
           3        d                                               4          c
           4        c                                               3          d


   2)
  1. local tabFiles = {  
  2. [3] = "test2",          --若换成[1]="XXX",则只输出第一条。ipairs只从索引1开始
  3. [6] = "test3",  
  4. [4] = "test1"  
  5. }  
  6.    
  7. for k, v in ipairs(tabFiles) do  
  8. print(k, v)  
  9. end  
         
 
输出:                             如果换成pairs:
                                                                      3          test2
                                                                      6          test3
                                                                      4          test1
 
                                                                  
   3)
         
  1. tbl = {"alpha""beta", [3] = "uno", ["two"] = "dos"}  
  2.   
  3. for i,v in ipairs(tbl) do    --输出前三个
  4.     print( tbl[i] )  
  5. end  
  6.   
  7. for i,v in pairs(tbl) do    --全部输出  
  8.     print( tbl[i] )  
  9. end  



  4)
      
  1. mytable = {[1]="a1"
  2.            [2] ="a2"
  3.            [3] = "a3"
  4.            [5] = "a4",
  5.            [6] = "a5"}  
  6.   
  7. for i,v in ipairs(mytable) do     
  8.     print( tbl[i] )  
  9. end  

  
输出:                  如果换成pairs:
      1   a1                          6   a5                                            
      2   a2                          2   a2                                  
      3   a3                          3   a3   
                                         1   a1
                                         5   a4
有一个要注意的是pairs()的一个问题,用pairs()遍历是[key]-[value]形式的表是随机的,跟key的哈希值有关系。


  5)
  lines={
             luaH_aet=10,
             luaH_het=20,
             luaH_present=30
          }
   a={}
  for n in pairs(lines) do
       a[#a+1]=n
 end
 table.sort(a)

 for i,n in ipairs(a) do          --没输出
 print(n)
 end

输出:
luaH_aet
luaH_het
luaH_present 
     


三、效率           

    http://blog.csdn.net/tony7758/article/details/6334001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屠变恶龙之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值