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