1

Scala 2.13 迁移指南包含有关如何移植的说明collection.breakOut

collection.breakOut不再存在,使用.viewand.to(Collection)代替。

概览表中的以下几段有:

描述 旧代码 新代码 自动迁移规则
collection.breakOut
不复存在
val xs: List[Int]
= ys.map(f)
(collection.breakOut)
val xs =
ys.iterator.map(f).to(List)
Collection213Upgrade

scala-collection-migration重写规则使用.iterator. 两者有什么区别?有理由偏爱其中一个吗?

4

1 回答 1

4

当这样使用时,没有真正的区别。

AView可以重复使用,而 anIterator用过一次后必须丢弃。

val list = List(1,2,3,4,5)

val view = list.view
val viewPlus1 = view.map(_ + 1).toList
view.foreach(println) // works as expected

val it = list.iterator
val itPlus1 = it.map(_ + 1).toList
it.foreach(println) // undefined behavior

以最简单的形式 aView[A]是一个 function 的包装器() => Iterator[A],因此它的所有方法都可以创建一个新的Iterator[A]并委托给该迭代器上的适当方法。

于 2021-08-10T11:24:47.033 回答