迭代器的练习 (未完成) (道阻且长)
第一题
第一题很简单,用闭包实现
function fromto(n,m) local iter = n return function () if iter <= m then iter = iter + 1 return iter-1 end end end for i in fromto(2,6) do print(i) end
也可以不用闭包,用一个更简单的工厂将参数的位置改一下,无状态的迭代器开销更小
第二题
复习一下无状态迭代器的要求
每一次迭代,迭代函数都是用两个变量(状态常量和控制变量)的值作为参数被调用,一个无状态的迭代器只利用这两个值可以获取下一个元素。
先写有状态的迭代器
function fromto(n,m,s)
local iter = n
return function ()
if iter <= m
then
iter = iter + s
return iter - s
end
end
end
for i in fromto(2,20,2) do
print(i)
end
posted on 2023-07-07 13:55 omori_Sakuya 阅读(11) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步