5

おそらく私は間違ったツリーを (再び) 吠えていますが、プロパティを として入力するのが通常の慣習である場合、 を指定してscala.collection.immutable.Set[A]これらの 1 つをどのように作成します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(そうでない場合は、どうすればよいですか)?

4

2 に答える 2

3

基本的に、「正規のファクトリ メソッド」を使用して不変の Set を作成しているため、シーケンスまたは「varargs」(Set(a,b,c) のように) を受け取る Set のコンパニオン オブジェクトに適用されます。これを参照してください:
http://scala-tools.org/scaladocs/scala-library/2.7.1/scala/collection/immutable/Set$object.html

標準ライブラリでそれを行う方法は他にないと思います。

于 2009-03-24T16:13:56.577 に答える
0

不変のコピーを作成します。

scala> val mu = new scala.collection.mutable.HashSet[String]
mu: scala.collection.mutable.HashSet[String] = Set()

scala> val im = mu.clone.readOnly
im: scala.collection.Set[String] = ro-Set()
于 2009-03-24T17:34:03.577 に答える