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 最好,除非有其他需求
  • 相关阅读:
    Android——DEBUG 堆栈
    mycat读写分离与主从切换
    【測试工具】一个将Unix时间转换为通用时间的工具
    jQuery:多个AJAX/JSON请求相应单个回调
    iOS开发中经常使用的Xcode插件
    JAVA学习第二十六课(多线程(五))- 多线程间的通信问题
    我的mac OSX bash_profile文件
    angular学习(二)—— Data Binding
    python 读取grib grib2
    linux获取内存、cpu、负载、网口流量、磁盘信息
  • 原文地址:https://www.cnblogs.com/pmsl/p/7419240.html
Copyright © 2011-2022 走看看