有状态的迭代器
实践为先,先写个错误代码
function iter_pro (arr,b) local index = 0 return function () index = index + 1 if arr[index] then return arr[index] end end end a={1,2,3,5,4} for v in iter_pro ,a,0 do print(v) end
首先。既然已经保存了状态,就没必要用到第2个参数
function iter_pro (arr,b)
其次,真正的迭代器为“工厂”iter_pro 生成的闭包 要调用工厂生成迭代器
for v in iter_pro ,a,0 do
正确的代码为
function iter_pro (arr) local index = 0 return function () index = index + 1 if arr[index] then return arr[index] end end end a={1,2,3,5,4} for v in iter_pro(a) do print(v) end
有状态的迭代器完成了
posted on 2023-07-05 11:22 omori_Sakuya 阅读(9) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf