从可迭代创建集合时,我是否必须转换为Seq?

oxb*_*kes 5 scala scala-collections

也许我正在咆哮错误的树(再次),但如果通常的做法是将一个属性输入为a scala.collection.immutable.Set[A],那么你将如何创建其中一个给定的scala.Iterable[A]?例如:

class ScalaClass {
    private var s: scala.collection.immutable.Set[String]

    def init(): Unit = {
        val i = new scala.collection.mutable.HashSet[String] 
        //ADD SOME STUFF TO i

        s = scala.collection.immutable.Set(i) //DOESN'T WORK

        s = scala.collection.immutable.Set(i toSeq : _ *) //THIS WORKS
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么有必要通过a创建不可变集Seq(或者如果不是,那么我该怎么做)?

Ger*_*mán 3

基本上是因为您正在通过 Set 的伴随对象中应用的“规范工厂方法”创建不可变的 Set,该对象采用序列或“varargs”(如 Set(a,b,c) 中)。请参阅: http:
//scala-tools.org/scaladocs/scala-library/2.7.1/scala/collection/immutable/Set$object.html

我认为标准库中没有另一个可以做到这一点。