迭代器的练习 (未完成) (道阻且长)
第一题
第一题很简单,用闭包实现
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 阅读(9) 评论(0) 编辑 收藏 举报