码迷,mamicode.com
首页 > 其他好文 > 详细

ipairs与pairs的区别

时间:2019-06-02 14:12:53      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:ipairs   出现   log   tab   结果   返回   遇到   sdn   print   

ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别

 

1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table[i]值

如:table1 = { key1 = "val1", key2 = "val2", "val3" }

pairs 会优先输出没有键的值,即先输出"val3" ,再到key1 = "val1",再 key2 = "val2"。

ipairs 只会输出没有键的值。即只输出"val3",其他不会输出。

 

 

pairs能够遍历表中全部的key,而且除了迭代器本身以及遍历表本身还能够返回nil;可是ipairs则不能返回nil,仅仅能返回数字0,假设遇到nil则退出。它仅仅能遍历到表中出现的第一个不是整数的key

 

例程1:

 

    a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}

    for key, value in ipairs(a) do

      print(key, value)

    end

 

结果:

 

    1    a1

    2    a2

    3    a3

 

例程2:

 

    a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}

    for key, value in pairs(a) do

      print(key, value)

    end

 

 

结果:

 

    6    a5

    2    a2

    3    a3

    1    a1

    5    a4

 

例程3:

 

    tab1 = { key1 = "val1", key2 = "val2", "val3" }

    for k, v in pairs(tab1) do

        print(k .. " - " .. v)

    end

 

结果:

 

    1 - val3

    key1 - val1

    key2 - val2

 

例程4

 

    tab1 = { key1 = "val1", key2 = "val2", "val3" }

    for k, v in ipairs(tab1) do

        print(k .. " - " .. v)

    end

 

结果:

 

1 - val3

---------------------

 

 

转载于:

https://blog.csdn.net/zwj695535100/article/details/83040127

ipairs与pairs的区别

标签:ipairs   出现   log   tab   结果   返回   遇到   sdn   print   

原文地址:https://www.cnblogs.com/gd-luojialin/p/10962724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!