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

标签 scala scala-collections

也许我(又一次)找错了树,但如果将属性输入为 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
    }
}

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

最佳答案

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

我认为标准库中没有其他方法可以做到这一点。

关于从可迭代对象创建集合时,Scala 是否必须转换为 Seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/677107/

相关文章:

scala - 无法理解 scala 函数应用程序中的占位符 _ 行为

scala - 为什么在这个 Scala 代码中需要向上转换?

java - 计算列表的所有排列) inside List

java - 如何处理多个 Akka Actor?

maven-2 - 获取有关失败的 scala/maven/specs 测试的失败详细信息

scala - 泛型类型的模式匹配

java - 使用 Java 中的 Scala 集合出现问题

scala - 如何在scala中获取reflect.runtime.universe.Type的类型参数?

scala.collection.breakOut 与 View