zoukankan      html  css  js  c++  java
  • lua pairs 与 ipairs

    pairs 、ipairs 都可以遍历 数组和表 的key并返回 key 与其对应的值

    不同之处:

    ipairs:

      1、ipairs 遍历的key 只能是数字,并且数字是从1开始切连续的。

      2、ipairs 返回按照 key 的升序返回

    pairs:

      返回按照数据定义或者插入的顺序返回。

    例1- 遍历数组:

    function TraversalTable(tb,func)
    print("========== traversalTable =============")
    for key,value in func(arr) do
    print("key:",key,"value:",value)
    end
    end

    arr = {1,2,3,4,5,6}
    TraversalTable(arr,pairs)

    TraversalTable(arr,ipairs)
    ========== TraversalTable 输出 =============
    key:    1   value:  1
    key:    2   value:  2
    key:    3   value:  3
    key:    4   value:  4
    key:    5   value:  5
    key:    6   value:  6
    ========== TraversalTable 输出 =============
    key:    1   value:  1
    key:    2   value:  2
    key:    3   value:  3
    key:    4   value:  4
    key:    5   value:  5
    key:    6   value:  6

    例2-遍历表:

    function TraversalTable(tb,func)
    print("========== TraversalTable 输出 =============")
    for key,value in func(arr) do
    print("key:",key,"value:",value)
    end
    end

    arr = {[0]=2,[1]=1,[2]=2,[3]=3}
    TraversalTable(arr,pairs)

    TraversalTable(arr,ipairs)
    ========== TraversalTable 输出 =============
    key:    0   value:  2
    key:    2   value:  2
    key:    3   value:  3
    key:    1   value:  1
    ========== TraversalTable 输出 =============
    --- 此处没有打印 key = 0 的元素
    key:    1   value:  1
    key:    2   value:  2
    key:    3   value:  3
     
    例3-遍历表:
    function TraversalTable(tb,func)
    print("========== TraversalTable 输出 =============")
    for key,value in func(arr) do
    print("key:",key,"value:",value)
    end
    end

    arr = {['a']=2,['b']=1,['c']=2,['d']=3}
    TraversalTable(arr,pairs)

    TraversalTable(arr,ipairs)
    ========== TraversalTable 输出 =============
    key:    a   value:  2
    key:    d   value:  3
    key:    c   value:  2
    key:    b   value:  1
    ========== TraversalTable 输出 =============
    ipairs 没有输出
     
    例4-遍历表:
    function TraversalTable(tb,func)
    print("========== TraversalTable 输出 =============")
    for key,value in func(arr) do
    print("key:",key,"value:",value)
    end
    end

    arr = {['a']=2,['b']=1,[2]=2,[3]=3}
    TraversalTable(arr,pairs)

    TraversalTable(arr,ipairs)
    ========== TraversalTable 输出 =============
    key:    a   value:  2
    key:    2   value:  2
    key:    3   value:  3
    key:    b   value:  1
    ========== TraversalTable 输出 =============
    key值为数字的key 从2 开始,因此无法打印出来
     
    例 5- 遍历列表:
    function TraversalTable(tb,func)
    print("========== TraversalTable 输出 =============")
    for key,value in func(arr) do
    print("key:",key,"value:",value)
    end
    end

    arr = {['a']=2,['b']=1,[1]=2,[2]=3}
    TraversalTable(arr,pairs)

    TraversalTable(arr,ipairs)
    ========== TraversalTable 输出 =============
    key:    a   value:  2
    key:    2   value:  3
    key:    1   value:  2
    key:    b   value:  1
    ========== TraversalTable 输出 =============
    key:    1   value:  2
    key:    2   value:  3
     
    因此: 在遍历数组时使用 pairs 或者 ipairs 都可以。遍历table时使用 pairs 最好,除非有其他需求
  • 相关阅读:
    Using the proxy page
    ArcGIS 帮助 10.1 几何服务
    【转】地图投影系列介绍(三)_ 地图投影
    最简单的闰年函数
    JSP的编码问题
    和苗波玩吉他英雄,还有诺拉斯战士
    倒底是用接口,还是继承类?
    收集的两个Winform三层结构的例子
    在vs.net 2005 中 像JBuilder,Eclipse那样格式化代码
    JSP比ASP好的几个地方
  • 原文地址:https://www.cnblogs.com/pmsl/p/7419240.html
Copyright © 2011-2022 走看看