加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala.collection.breakOut vs views

发布时间:2020-12-16 21:31:35 所属栏目:安全 来源:网络整理
导读:This SO answer描述了如何使用scala.collection.breakOut来防止创建浪费的中间集合.例如,这里我们创建一个中间的Seq [(String,String)]: val m = List("A","B","C").map(x = x - x).toMap 通过使用breakOut,我们可以防止创建这个中间的Seq: val m: Map[Str
This SO answer描述了如何使用scala.collection.breakOut来防止创建浪费的中间集合.例如,这里我们创建一个中间的Seq [(String,String)]:

val m = List("A","B","C").map(x => x -> x).toMap

通过使用breakOut,我们可以防止创建这个中间的Seq:

val m: Map[String,String] = List("A","C").map(x => x -> x)(breakOut)

Views solve the same problem和另外访问元素懒惰:

val m = (List("A","C").view map (x => x -> x)).toMap

我假设创建的查看包装器是相当便宜的,所以我的问题是:有什么真正的理由使用breakOut over Views?

解决方法

我不认为views和breakOut是一样的.

breakOut是一个CanBuildFrom实现,用于通过消除中间步骤来简化转换操作.从A到B没有中介收集. breakOut意味着让Scala选择适当的构建器对象,以在给定情况下生成新项目的最大效率.更多细节here.

意见处理不同类型的效率,主要销售点是:“没有更多的新物品”.视图存储对对象的光引用以解决不同的使用场景:懒惰访问等

底线:

如果您在视图中映射,您可能仍然可以获得在创建预期结果之前创建的引用的中间集合.您还可以从

collection.view.map(somefn)(breakOut)

比从:

collection.view.map(someFn)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读