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 最好,除非有其他需求
  • 相关阅读:
    log4j配置独立日志方法
    JAVA程序测试时用到的与内存测试有关的东西
    win8平板APP开发的教程文章
    SQL SERVER SA密码忘记,windows集成身份验证都登录不了不怎么办
    windows远程连接设置
    Linux配置自动时间同步
    GitHub 优秀的 Android 开源项目
    Eclipse文件编码设置的问题
    美化mac os下的visual studio code内置终端
    ASP.NET MVC轻教程 Step By Step 13——页面布局
  • 原文地址:https://www.cnblogs.com/pmsl/p/7419240.html
Copyright © 2011-2022 走看看