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

Scala将Iterable或collection.Seq转换为collection.immutable.Seq,scala,scala-collections,Scala,Scala Collections,Scala collections中的toSeq方法似乎会返回一个Scala.collection.Seq,我也可以返回一个Traversable或Iterable,但需要将其转换为Scala.collection.immutable.Seq 有没有一个简单的方法可以做到这一点 谢谢 Richard使用to方法在Scala 2.10中的任意集合类型之间进行转换: scala> Array(1, 2, 3).toSeq res0: Seq[Int] = WrappedArray(1, 2,

Scala collections中的
toSeq
方法似乎会返回一个
Scala.collection.Seq
,我也可以返回一个
Traversable
Iterable
,但需要将其转换为
Scala.collection.immutable.Seq

有没有一个简单的方法可以做到这一点

谢谢
Richard

使用
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)

你的回答对我很有帮助,但是为什么,哦,为什么需要这个?我只处理不可变集合-为什么for yield的结果需要这样一个.to?我的朋友Ivan Yurchenko澄清了这一点:问题是有三件事:a)scala.collection.Seq B)scala.collection.immutable.Seq C)scala.collection.mutable.Seq B和C派生自a so,如果我们有a,我们不能确定它是可变的还是不可变的,这就是为什么显式转换(.toList或其他什么)或从一开始就将它们设置为不可变是很奇怪的,因为Scala中的默认Seq只是collections.Seq;这很奇怪,因为大多数情况下,一切都是不可变的。列表(1,2,3)。toSeq生成一个集合。Seq。。。不是不可变的。collections.Seq。这似乎不对吗?更奇怪的是,一个immutable.collections.Seq.toIterable产生一个collections.Iterable,而不是immutable.collections.Iterable!