首页 > 其他分享 >有状态的迭代器

有状态的迭代器

时间:2023-07-05 11:35:00浏览次数:44  
标签:function 状态 arr end 迭代 index pro iter

实践为先,先写个错误代码

 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

有状态的迭代器完成了

标签:function,状态,arr,end,迭代,index,pro,iter
From: https://www.cnblogs.com/omori-Sakuya/p/17528079.html

相关文章

  • 学迭代器遇到的一个问题
    事情是这样的functioniter(arr,index)index=index+1ifarr[index]thenreturnarr[index],indexendenda={1,2,3,5,4}fork,viniter,{1,2,5,6,5,4},0doprint(k)end运行结果:寄将手打的table改成a得......
  • TCP连接状态CLOSE_WAIT和TIME_WAIT详细分析
    一、TCP连接状态简介TCP协议规定,对于已经建立的连接,网络双方要进行四次挥手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。 网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服......
  • 迭代失败的4个迹象,团队中了几个?快来看看如何解决!
    迭代在Scrum中有着举足轻重的作用,它能将产品愿望清单转化为可操作的任务,将头脑风暴塑造成具体结果。迭代不仅加速了项目交付,甚至还创造了一种责任文化,尤其针对在地理位置上分散的团队。虽然迭代一直是快速推进项目管理的可靠方法,但如果做得不好,它们可能会造成严重的流程不平衡。......
  • 微信小程序uniapp解决真机顶部自定义菜单显示(手机状态栏覆盖)
    1.在data里面加入参数statusBarHeight:uni.getSystemInfoSync().statusBarHeight,//状态栏高度2.对返回按钮处理<!--空出状态栏高度--><view:style="'height:'+statusBarHeight+'px;'"></view><!--返回按钮--><di......
  • 手机直播源码,设置透明背景(去掉蒙层)状态栏颜色不改变
    手机直播源码,设置透明背景(去掉蒙层)状态栏颜色不改变Dialog设置透明背景(去掉蒙层) //背景全透明window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))window!!.setDimAmount(0f)   ​     Dialog弹出时状态栏颜色不改变 //弹出时状态栏颜色不......
  • Python黑魔法:探秘生成器和迭代器的神奇力量
    在Python中,生成器和迭代器是实现惰性计算的两种重要工具,它们可以帮助我们更有效地处理数据,特别是在处理大数据集时,可以显著减少内存的使用。接下来,我们将详细介绍这两种工具。一、迭代器迭代器是一种特殊的对象,它可以遍历一个集合中的所有元素。任何实现了__iter__()和__next_......
  • 蚁群算法即使在迭代过程中也能动态适应拓扑偏移。它是如何实现这一目标的?
    蚁群算法通过模拟蚂蚁在寻找食物的过程中的行为,来解决优化问题。在迭代过程中,它能够动态适应拓扑偏移,主要通过以下几个步骤来实现:蚂蚁的移动:蚂蚁根据之前的经验和信息素浓度,选择下一个移动的位置。这个选择过程受到了拓扑偏移的影响,因为蚂蚁会更倾向于选择与当前位置更接近目标......
  • 行距调到最小状态
    问题:将文字中的行距调到最小状态解决:选取待调整行(包括段落标记)》【开始】》【段落】对话框触发器》【缩进与间距】》【行距】固定值》1磅》【确定】当前一页是到达最底端的表格,可以用此法消除多出来的一页。 ......
  • TCP TIME_WAIT 状态 及相关问题优化
    TCP是一种面向连接的可靠的传输协议,它在建立和释放连接时,需要经过一系列的握手和挥手过程。在这个过程中,会涉及到一些不同的状态,其中一个比较常见但又容易被误解的状态就是TIME_WAIT状态。本文将从以下几个方面介绍TIME_WAIT状态的原理和优化方法:TIME_WAIT状态是如何产生......
  • Qt/C++编写超精美自定义控件(历时9年更新迭代/超202个控件/祖传原创)
    一、前言无论是哪一门开发框架,如果涉及到UI这块,肯定需要用到自定义控件,越复杂功能越多的项目,自定义控件的数量就越多,最开始的时候可能每个自定义控件都针对特定的应用场景,甚至里面带了特定的场景的一些设置和处理,随着项目数量的增多,有些控件又专门提取出来共性,做成了通用的自定义......