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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |