Lua中table的ipairs和pairs以及function的:和.区别

转自: csdn火木达人

Lua中table遍历ipairs和pairs的区别
pairs()函数基本和ipairs()函数用法相同, 区别在于pairs()可以遍历整个table, 即包括数组及非数组部分.ipairs()函数用于遍历table中的数组部分.

[plain]  view plain  copy
  1. local tableA = {1,2,suncle = "xxx",20};  
  2. tableA[10] = 10;  
  3. local tableB = {1,2,3};  
  4.   
  5. for k,v in ipairs(tableA) do  
  6.     print("ipairs tableA : k = " .. k .. " --- v = " .. tostring(v));  
  7. end  
  8.   
  9. for k,v in pairs(tableA) do  
  10.     print("pairs tableA : k = " .. k .. " --- v = " .. tostring(v));  
  11. end  
  12.   
  13. for k,v in ipairs(tableB) do  
  14.     print("ipairs tableB : k = " .. k .. " --- v = " .. tostring(v));  
  15. end  
  16.   
  17. for k,v in pairs(tableB) do  
  18.     print("pairs tableB : k = " .. k .. " --- v = " .. tostring(v));  
  19. end  

另一种遍历连续的数组部分的方法:

[plain]  view plain  copy
  1. print("#tableA = " .. #tableA);  
  2. for i=1,#tableA do  
  3.     print(tostring(tableA[i]));  
  4. end  

Lua中function的:和.区别

[plain]  view plain  copy
  1. local tableA = {};  
  2. function tableA:funcA()  
  3.     print("funcA self = " .. tostring(self));  
  4. end  
  5.   
  6. function tableA.funcB(self)  
  7.     print("funcB self = " .. tostring(self));  
  8. end  
  9.   
  10. function tableA.funcC()  
  11.     print("funcC self = " .. tostring(self));  
  12. end  
  13.   
  14. tableA:funcA();-- : 默认会把tableA传进funcA中,默认接受的是self  
  15. tableA.funcA(tableA); -- . 没有默认的传递值,如果方法是定义成function tableA:funcA()形式的,需要现实的把tableA传进去  
  16. tableA.funcA(); -- 这种方式 self为空  
  17.   
  18. tableA:funcB();--这种方式会默认传递自己,所以如果要用.去声明方法,需要现实的接受function tableA.funcB(self)  
  19. tableA.funcB();--没有默认传值,所以self为空  
  20. tableA.funcB(tableA);--显示的传值  
  21.   
  22. tableA:funcC();  
  23. tableA.funcC();  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值