Scala将Iterable或collection.Seq转换为collection.immutable.Seq

Ric*_*odd 38 scala scala-collections

看来toSeqScala集合中的方法返回一个scala.collection.Seq,我也可以返回一个Traversable或者Iterable需要将其转换为a scala.collection.immutable.Seq.

是否有捷径可寻?

谢谢理查德

axe*_*l22 65

使用此to方法在Scala 2.10中的任意集合类型之间进行转换:

scala> Array(1, 2, 3).toSeq
res0: Seq[Int] = WrappedArray(1, 2, 3)

scala> Array(1, 2, 3).to[collection.immutable.Seq]
res1: scala.collection.immutable.Seq[Int] = Vector(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

  • 我的朋友Ivan Yurchenko澄清了这一点:问题是有三件事:A)scala.collection.Seq B)scala.collection.immutable.Seq C)scala.collection.mutable.Seq B和C派生自A,所以,如果我们有A,我们不能肯定地说它是可变的还是不可变的,这就是为什么需要显式转换(.toList或者其他东西)或者从一开始就将它们设置为不可变的原因 (2认同)