Lua——迭代器的使用、pairs 和 ipairs区别
--迭代器是一种可以便利一种集合中所有元素得机制
--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区别相关推荐
- lua pairs与ipairs区别
目录 pairs与ipairs区别 pairs与ipairs区别 pairs是无序遍历,ipairs是有序遍历 pairs支持key,value格式,ipairs 只支持key为数字 local a= ...
- lua中 pairs 与 ipairs 区别
pairs 与 ipairs 两者的区别如下: --数组这么定义,貌似没差别 t= {1,2,3,4,5}for k, v in ipairs(t) doprint(v) endprint(&quo ...
- 小羊驼和你一起学习cocos2d-x与lua之一(迭代器pairs 和 ipairs区别)
标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的 (string.gmatch)等等 pairs可 ...
- pairs 和 ipairs区别
pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出
- Lua⭐️迭代器pairs、ipairs ; 自定义迭代器
迭代器pairs.ipairs array={"lua","c#","c"} --pairs可以遍历所有的键值对,即使其中key不连续 fo ...
- lua中, pairs和ipairs的区别
函数pairs和ipairs都是实现遍历功能的函数,通常使用方法是和for函数共同使用构造for u,v in pairs/ipairs(t)实现遍历t表中的所有元素对. 区别在于,pairs可以 ...
- Lua中 pairs 和 ipairs 的区别
Lua中 pairs 和 ipairs 的区别 在我看来,pairs就是粗略计算,ipairs就是仔细计算. pairs只关注存在还是不存在,而ipairs还要关注存在是否合理. pairs将存在的值 ...
- pairs和ipairs的区别
在lua中ipairs 和pairs均可以用来遍历集合,但是两者有区别: 同:都是能遍历集合(表.数组),两者均优先按顺序输出没有key的值: 异:对于有key的集合: ipairs从第一个数字key ...
- Lua系列--pairs和ipairs
Lua系列–pairs和ipairs Lua中Table的存储方式 在看二者的区别之前,我们首先来看一下Lua中的table是如何在内存中进行分配的. Table的组成: 1.哈希表 用来存储Key- ...
最新文章
- PyTorch核心贡献者开源书:《使用PyTorch进行深度学习》完整版现已发布!
- 聚簇索引与非聚簇索引学习总结
- 摇杆控制方向原理_医用无油空压机的送料作用及工作原理
- java中删除每一条数据,一条sql语句删除表中所有除ID 不同之外的记录,只留一条。...
- [学习笔记] 二分图基础定理的相关证明
- Mac上使用Jenv管理多个JDK版本
- 任正非:做芯片砸钱不行 得砸数学家、物理学家、化学家
- C# --- 用TimeSpan计算时间
- asp调用数据库汉字显示乱码解决方案
- linux samba
- Python获取指定目录下文件数量及总大小
- 千钧一发之际赢得暂缓令,苹果App Store要反败为胜了?
- [NIPS 2018] Delta Encoder: An Effective Sample Synthesis Method for Few Shot Object Recognition
- 超级爆笑小学生作文大全,这孩子太搞了
- 2017年大工考博英语加试试题。给学弟学妹们一点帮助
- CSMA/CD协议总结最短帧长计算
- Java中的类与对象之间的关系
- Git --- Git Gui
- html 波斯语 对齐,在htm中使用波斯语字体发送大量HTML电子邮件
- 面试直通卡大放送,微软面试官带你揭秘面试潜规则!