• 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 最好,除非有其他需求
  • 相关阅读:
    CSS all 属性
    platform (Operating System) – Python 中文开发手册
    HTML DOM querySelectorAll() 方法
    Linux enable命令
    dnat & snat
    鲲鹏920 上实现lvs fullnat--安装ipvsadm
    kylin os操作系统镜像适配ironic 裸金属 管理
    neutron network:router_gateway
    tcpdump实现和run_filter
    ebpf sock sk_filter实现
  • 原文地址:https://www.cnblogs.com/pmsl/p/7419240.html
Copyright © 2020-2023  润新知