首页 > 其他分享 >迭代器与生成器总结

迭代器与生成器总结

时间:2023-06-16 18:31:42浏览次数:35  
标签:总结 迭代 对象 生成器 接口 关键字 yield

参考《JavaScript高级程序设计》


迭代是一种所有编程语言中都可以看到的模式。ECMAScript 6 正式支持迭代模式并引入了两个新的语言特性:迭代器生成器

迭代器是一个可以由任意对象实现的接口,支持连续获取对象产出的每一个值。任何实现 Iterable 接口的对象都有一个 Symbol.iterator 属性,这个属性引用默认迭代器。默认迭代器就像一个迭代器工厂,也就是一个函数,调用之后会产生一个实现 Iterator 接口的对象

迭代器必须通过连续调用 ==next()==方法才能连续取得值,这个方法返回一个** IteratorObject**。这个对象包含一个 done 属性和一个 value 属性。前者是一个布尔值,表示是否还有更多值可以访问;后者包含迭代器返回的当前值。这个接口可以通过手动反复调用 ==next()==方法来消费,也可以通过原生消费者,比如 for-of 循环来自动消费。

生成器是一种特殊的函数,调用之后会返回一个生成器对象。生成器对象实现了 Iterable 接口,因此可用在任何消费可迭代对象的地方。生成器的独特之处在于支持 yield 关键字,这个关键字能够暂停执行生成器函数。使用 yield 关键字还可以通过 ==next()==方法接收输入和产生输出。在yield加上星号之后,yield 关键字可以将跟在它后面的可迭代对象序列化为一连串值

任何实现 Iterable 接口的数据结构都可以被实现 Iterator 接口的结构“消费”(consume)。迭代器(iterator)是按需创建的一次性对象。每个迭代器都会关联一个可迭代对象,而迭代器会暴露迭代其关联可迭代对象的 API。

迭代器与生成器总结_生成器

迭代器与生成器总结_迭代_02

标签:总结,迭代,对象,生成器,接口,关键字,yield
From: https://blog.51cto.com/u_16104577/6501650

相关文章

  • k8s 梳理及使用总结
    ---1.Kubernetes概述1.最初Google开发了1个叫Borg的系统(现在命名为Omega),来调度近20多亿个容器从2014年第1个版本发布以来,迅速得到了开源社区的追捧,?前,k8s已经成为了发展最快、市场占有率最高的容器编排引擎产品。---2.特点轻量级,资源消耗小开源弹性伸缩负载均衡IPVS---3......
  • Go-map、切片、数组循环常见问题总结
    map1、forrangemap在开始执行循环的时候,底层做了随机种子,故其循环是随机的。packagemainimport"fmt"funcmain(){ a:=map[int]int{0:1,1:2,2:3,3:4,4:5} for_,c:=rangea{ fmt.Println(c) }}输出:34512多次执行,结果不同数组packagema......
  • File I/O学习总结
    1.File文件的增删查(1)增publicvoidaddFile(Filefile){file.createNewFile();}(2)删publicvoiddeleteFile(Filefile){file.delete();}(3)查publicvoidfindFile(Filefile){file.getName();file.getAbsolutePath();}2.流的指向(1)读入【文件读入到......
  • 【JS错题总结】关于上下文
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><script>functionfunc1(){console.log(1,this.value)}......
  • 第三次博客:PTA题目集6-8总结
    第三次博客:PTA题目集6-8总结 前言:菜单系列终于结束了,但是接踵而至的是全新的选课系列,明明JAVA课都已经上完了,但是大作业的更新却并没有停止,由此可见蔡老师真的太爱我们了。这次的选课系统个人感觉是和点菜大同小异的,菜单==课表,选课==点菜,算......
  • 思维总结
    方法找出满足要求的最大值和最小值,考虑从最小值逐渐向最大值调整,或从最大值逐渐向最小值调整。找出一种特殊情况下的方案,在考虑把其它情况变成这种特殊情况。或者把其它情况分成多个这种特殊情况。有些构造题,考虑按照一定顺序放物品,然后发现如果当前点能放但不放,后面一定......
  • 2023-6-15 面试笔试复盘总结
    四川君迪能源后端笔试2023-6-15简答题:线程和进程的区别本质区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。包含关系:一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。资源开销:每个进程都有独立的地址空......
  • java中相对路径,绝对路径问题总结
    java中相对路径,绝对路径问题总结2007-12-2000:191.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:\xyz\test.txt代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。......
  • 实时渲染常用纹理技术总结:视差映射
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、概述视差映射(ParallaxMapping)是一种类似于法线贴图的纹理技术,它们都能显著增强模型/纹理表面细节并赋予其凹凸感,但法线贴图所带来的凹凸感不会......
  • STM32嵌入式面试知识点总结
    一、STM32F1和F4的区别?解答:参看:STM32开发–STM32初识内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核;主频不同:F1主频72MHz,F4主频168MHz;浮点运算:F1无浮点运算单位,F4有;功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等;内存大小:F1内部SRAM最大64K,F4有1......