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", "B", "C").map(x => x -> x)(breakOut)
Views solve the same problem以及懒惰地访问元素:
val m = (List("A", "B", "C").view map (x => x -> x)).toMap
我假设创建
View
wrappers 相当便宜,所以我的问题是:有什么真正的理由使用 breakOut
超过 View
年代?
最佳答案
从 Scala 2.13 开始,这不再是一个问题。 Breakout 已被删除,建议替换 View 。
Scala 2.13 Collections Rework
View 也是 collection.breakOut 的推荐替代品。
例如,
val s: Seq[Int] = ...
val set: Set[String] = s.map(_.toString)(collection.breakOut)
可以用以下相同的性能特征表示:
val s: Seq[Int] = ...
val set = s.view.map(_.toString).to(Set)
关于scala.collection.breakOut 与 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285620/