zoukankan      html  css  js  c++  java
  • pairs 和 ipairs 的区别

    ipairs 在迭代过程中是会直接跳过所有手动设定key值的变量。pairs不会跳过手动设置key值的变量。

    实例

    tab = {1,2,a="cd","d"}
    for i,v in pairs(tab) do
        print(i,v)
    end

    输出

    1    1
    2    2
    3    d
    a    cd

    实例

    tab = {1,2,a="cd","d"}
    for i,v in ipairs(tab) do
        print(i,v)
    end

    输出

    1    1
    2    2
    3    d

    如果遇到手动设置的key并且值为nil,那么pairs和ipairs都会选择跳过该元素

    例如:

    tab = {1,2,a= nil,"d"}
    for i,v in pairs(tab) do
        print(i,v)
    end

    输出

    1  1
    2  2
    3  d

    实例

    tab = {1,2,a= nil,"d"}
    for i,v in ipairs(tab) do
        print(i,v)
    end

    输出

    1  1
    2  2
    3  d

    ipairs在迭代过程中如果遇到nil时会直接停止。pairs会选择跳过。

    实例

    tab = {1,2,nil,"d"}
    for i,v in pairs(tab) do
    print(i,v)
    end

    输出

    1 1
    2 2
    4 d

    实例

    tab = {1,2,nil,"d"}
    for i,v in ipairs(tab) do
    print(i,v)
    end

    输出

    1 1
    2 2

    for 循环中,循环的索引 i 为外部索引,修改循环语句中的内部索引 i,不会影响循环次数

    for i=1,10 do
        i = 10
        print("one time,i:"..i)
    end

    仍然循环 10 次,只是 i 的值被修改了

    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10
    one time,i:10

    pairs 能迭代所有键值对。遇到nil不会停止,会直接跳过

    tab = {1,2,v=5,nil,"d"}
    for i,v in pairs(tab) do
    print(i,v)
    end

    输出

    1    1
    2    2
    4    d
    v    5

    ipairs 只会迭代键为数字的键值对,遇到nil会停止

    tab = {1,2,v=5,c=nil,"d"}
    for i,v in ipairs(tab) do
    print(i,v)
    end

    输出

    1    1
    2    2
    3    d

    总结

    共同点:

    遇到手动设置的值为nil的元素会跳过,如, tab = {1,2,a= nil,"d"}

    不同点:

    pairs遇到nil会跳过,ipairs遇到nil会停止 , 如,tab = {1,2,v=5,nil,"d"}

    pairs能够输出手动设置的元素,ipairs只能输出键值为整数的元素,如,tab = {1,2,v=5,nil,"d"}

  • 相关阅读:
    彻底解决Spring MVC 中文乱码 问题
    侯捷 c++面向对象程序设计
    folly学习心得(转)
    vcpkg —— VC++ 打包工具
    Windows下安装GCC
    Linux下编写 makefile 详细教程
    侯捷stl学习笔记链接
    《Effective C++(第三版)》-笔记
    CentOS 7 安装Boost 1.61
    Windbg查看w3wp进程占用的内存及.NET内存泄露,死锁分析
  • 原文地址:https://www.cnblogs.com/sea-stream/p/9979124.html
Copyright © 2011-2022 走看看