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 最好,除非有其他需求
  • 相关阅读:
    DDD之3实体和值对象
    DDD之2领域概念
    DDD之1微服务设计为什么选择DDD
    SOFA入门
    COLA的扩展性使用和源码研究
    kafka可插拔增强如何实现?
    请设计一个核心功能稳定适合二开扩展的软件系统
    如何保证kafka消息不丢失
    kafka高吞吐量之消息压缩
    kafka消息分区机制原理
  • 原文地址:https://www.cnblogs.com/pmsl/p/7419240.html
Copyright © 2011-2022 走看看