--迭代器是一种可以便利一种集合中所有元素得机制
--lua中,迭代器表示为函数,每调用一次函数,即返回集合中得下一个元素

--主要是根据闭合函数来实现得:闭合函数:一个函数加上该函数所需要访问得所有“非全局变量“

--迭代器内部实现
function DieDai(t)
    local i=0;
    return function()
        i=i+1
        return t[i]
    end
end

--使用方式1
t={"11","22","3","5333"}

local it=DieDai(t)
while true do
    local value=it()
    if value==nil then
        break
    end
    print(value)
end
print("-------------------------")
--使用方式2
for value in DieDai(t) do
    print(value)
end
print("-------------------------")
--返回两个值得迭代器
function DieDai2(t)
    local i=0;
    return function()
        i=i+1
        if i>#t then
            return nil;
        end
        return i,t[i];
    end
end

for value1,value2 in DieDai2(t) do
    print(value1..value2)
end

pairs 和 ipairs区别

同:都是能遍历集合(表、数组)

异:ipairs 仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到集合中出现的第一个不是整数的 key。

pairs 能遍历集合的所有元素。即 pairs 可以遍历集合中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil

Lua——迭代器的使用、pairs 和 ipairs区别相关推荐

  1. lua pairs与ipairs区别

    目录 pairs与ipairs区别 pairs与ipairs区别 pairs是无序遍历,ipairs是有序遍历 pairs支持key,value格式,ipairs 只支持key为数字 local a= ...

  2. lua中 pairs 与 ipairs 区别

    pairs 与  ipairs 两者的区别如下: --数组这么定义,貌似没差别 t= {1,2,3,4,5}for k, v in ipairs(t) doprint(v) endprint(&quo ...

  3. 小羊驼和你一起学习cocos2d-x与lua之一(迭代器pairs 和 ipairs区别)

    标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的 (string.gmatch)等等 pairs可 ...

  4. pairs 和 ipairs区别

    pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出

  5. Lua⭐️迭代器pairs、ipairs ; 自定义迭代器

    迭代器pairs.ipairs array={"lua","c#","c"} --pairs可以遍历所有的键值对,即使其中key不连续 fo ...

  6. lua中, pairs和ipairs的区别

     函数pairs和ipairs都是实现遍历功能的函数,通常使用方法是和for函数共同使用构造for u,v in pairs/ipairs(t)实现遍历t表中的所有元素对.  区别在于,pairs可以 ...

  7. Lua中 pairs 和 ipairs 的区别

    Lua中 pairs 和 ipairs 的区别 在我看来,pairs就是粗略计算,ipairs就是仔细计算. pairs只关注存在还是不存在,而ipairs还要关注存在是否合理. pairs将存在的值 ...

  8. pairs和ipairs的区别

    在lua中ipairs 和pairs均可以用来遍历集合,但是两者有区别: 同:都是能遍历集合(表.数组),两者均优先按顺序输出没有key的值: 异:对于有key的集合: ipairs从第一个数字key ...

  9. Lua系列--pairs和ipairs

    Lua系列–pairs和ipairs Lua中Table的存储方式 在看二者的区别之前,我们首先来看一下Lua中的table是如何在内存中进行分配的. Table的组成: 1.哈希表 用来存储Key- ...

最新文章

  1. PyTorch核心贡献者开源书:《使用PyTorch进行深度学习》完整版现已发布!
  2. 聚簇索引与非聚簇索引学习总结
  3. 摇杆控制方向原理_医用无油空压机的送料作用及工作原理
  4. java中删除每一条数据,一条sql语句删除表中所有除ID 不同之外的记录,只留一条。...
  5. [学习笔记] 二分图基础定理的相关证明
  6. Mac上使用Jenv管理多个JDK版本
  7. 任正非:做芯片砸钱不行 得砸数学家、物理学家、化学家
  8. C# --- 用TimeSpan计算时间
  9. asp调用数据库汉字显示乱码解决方案
  10. linux samba
  11. Python获取指定目录下文件数量及总大小
  12. 千钧一发之际赢得暂缓令,苹果App Store要反败为胜了?
  13. [NIPS 2018] Delta Encoder: An Effective Sample Synthesis Method for Few Shot Object Recognition
  14. 超级爆笑小学生作文大全,这孩子太搞了
  15. 2017年大工考博英语加试试题。给学弟学妹们一点帮助
  16. CSMA/CD协议总结最短帧长计算
  17. Java中的类与对象之间的关系
  18. Git --- Git Gui
  19. html 波斯语 对齐,在htm中使用波斯语字体发送大量HTML电子邮件
  20. 面试直通卡大放送,微软面试官带你揭秘面试潜规则!

热门文章

  1. 漫谈Commons-Collections反序列化
  2. 莫言出力、章泽天站台!京东百万豪奖作家背后是文娱野心
  3. HDU - 5976 Detachment(贪心思维)
  4. 计算机安装过程突然断电怎么办,安装SQL2008到一半,电脑突然断电怎么办
  5. 游戏运营岗位介绍和面试题答案
  6. comsol仿真-关于肌肤效应
  7. MySQL之初识MySQL
  8. 【无标题】灵遁者相观天下,相学培训书籍
  9. 戴尔R720系列服务器CPU升级,Dell 服务器R720的CPU列表
  10. 使用 Azure Databricks 做ETL