scala – 视图和流之间有什么区别?
发布时间:2020-12-16 09:40:14 所属栏目:安全 来源:网络整理
导读:在Scala 2.8集合框架中,view和toStream有什么区别? 解决方法 在视图中,每次访问时重新计算元素。流中的元素在被评估时被保留。 例如: val doubled = List(1,2,3,4,5,6,7,8,9,10).view.map(_*2)println(doubled.mkString(" "))println(doubled.mkString("
在Scala 2.8集合框架中,view和toStream有什么区别?
解决方法
在视图中,每次访问时重新计算元素。流中的元素在被评估时被保留。
例如: val doubled = List(1,2,3,4,5,6,7,8,9,10).view.map(_*2) println(doubled.mkString(" ")) println(doubled.mkString(" ")) 将重新评估每个元素的地图两次。一次为第一个println,再次为第二个。相反 val doubled = List(1,10).toStream.map(_*2) println(doubled.mkString(" ")) println(doubled.mkString(" ")) 只会使元素增加一倍。 视图就像一个创建集合的食谱。当您要求视图的元素时,每次都会执行食谱。 一条流就像一大堆干擦卡。该人知道如何计算集合的后续元素。你可以询问他收集的下一个元素,并给你一张写有元素的卡片,一张从卡片绑到手指上的弦(帮助他记住)。此外,在他给你一张卡片之前,他用手指将他的第一根绳子扣在新卡上。 如果您持有第一张卡(即保留对流的头部的引用),则当您要求下一个元素时,最终可能会用尽卡片(即内存),但如果您不需要返回到第一个元素,你可以剪切字符串,并把不需要的卡回到那个家伙,他可以重复使用(他们是干擦除后)。这是一个流如何表现无限序列,而不会耗尽内存。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Am命令用法(转)
- 使用Unix套接字获取“已使用的地址”错误
- Angular调用Asp.net Core JWT Authentication接口
- Scala,Charts和Google Visualization API
- angular-resource – 多个连续的httpBackend请求导致意外请
- Vim:如何粘贴而不覆盖寄存器
- shell – help – sed – 在任何形式的XxxXxx字符串之间插入
- WebService_java编写Webservice_Axis2_1.6
- 添加按钮到手风琴标题angular-ui bootstrap
- angular – 如何使用按钮样式在Ionic 2中创建自定义文件输入