Lua-迭代器
来源:互联网 发布:小程序个人中心源码 编辑:程序博客网 时间:2024/06/05 17:37
转自 http://www.jellythink.com/archives/506
“无状态的迭代器”,就是一种自身不保存任何状态的迭代器。因此,我们可以在多个循环中使用同一个无状态的迭代器,避免创建新的闭包的开销。
在每次迭代中,for循环都会用恒定状态和控制变量来调用迭代器函数。一个无状态的迭代器可以根据这两个值来为下次迭代生成下一个元素。这类迭代器的代表就是ipairs。它可以用来迭代一个数组的所有元素。如下述演示代码:
在这里,迭代器状态就是需要遍历的table(一个恒定状态,它不会在循环中改变)及当前的索引值(控制变量)。我们可以使用Lua代码来实现ipairs,大概就如下代码:
函数pairs与ipairs类似,也是用于遍历一个table中的所有元素。不同的是,它的迭代器函数是Lua中的一个基本函next。
在调用next(t, k)时,k是table t的一个key。此调用会以table中的任意次序返回一组值:此table的下一个key,及这个key所对应的值。而调用next(t, nil)时,返回table的第一组值。若没有下一组值时,next返回nil。所以,我们也可以使用next来判断一个table是否为空。
对于大家经常迷惑的ipairs和pairs的区别,在这里就能看的一清二楚了,ipairs只能用于遍历index是整型的table,同时,由于ipairs返回的控制变量初值为0,这就决定了,ipairs只能访问index从1开始的key和value;ipairs不能返回nil,当key对应的值为nil时,就直接终止遍历;而pairs则没有要求。
0 0
- lua--lua中的迭代器
- Lua 迭代器
- Lua迭代器
- Lua 迭代器
- Lua-迭代器
- Lua 迭代器
- Lua 迭代器
- lua 迭代器
- 迭代器模式lua实现
- Lua iterator 迭代器
- Lua中的迭代器
- lua中的迭代器
- lua 链表 迭代器
- lua自定义迭代器
- Lua 迭代器学习
- lua迭代器原理
- Lua自定义迭代器。
- lua中的迭代器分析
- HTTP API 设计指南
- 制作 wordpress 博客静态化到本地
- 函数的瞬时python 多端元光谱混合分解<七>
- 等待中。
- 377. Combination Sum IV
- Lua-迭代器
- 管理者和学者的关系,深入的换位思考的重要性
- 第34课:彻底解密Spark 2.1.X中Shuffle 中SortShuffleWriter排序源码内幕解密
- 256. Paint House
- [Python/自动化运维] 利用Paramiko模块执行批量上传/下载/执行命令/查看服务器列表
- Feature Point Detection and Matching
- 遍历idt表_数组
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
- linux usb gadget代码分析--- gadget功能驱动层