omori-Sakuya

迭代器的练习 (未完成) (道阻且长)

第一题

 

第一题很简单,用闭包实现

复制代码

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   omori_Sakuya  阅读(11)  评论(0编辑  收藏  举报

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示