2009-03-24 9 views
5

Forse sto abbaiando dall'albero sbagliato (di nuovo) ma se è normale che una proprietà venga digitata come scala.collection.immutable.Set[A], come creeresti uno di questi dato un scala.Iterable[A]? Per esempio:Scala devo convertire in un Seq quando creo una raccolta da un iterabile?

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 
    } 
} 

qualcuno può spiegare perché è necessario per creare il set immutabile attraverso un Seq (o se non lo è, allora come posso fare)?

risposta

0

Farà una copia immutabile:

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() 
+0

Mi dispiace, io non capisco il tuo punto. La mia domanda è stata la ragione per cui non è stato più facile convertire da una collezione immutabile a una collezione immutabile (eccetto tramite un Seq). Ovviamente mi hai dato una collezione di sola lettura; non immutabile –

+0

Sì, è di sola lettura ... Non è un sinonimo di immutabile? Forse non sempre ... ma in questo caso? Conosci un modo per mutare questa collezione? Questa è l'unica interfaccia ad esso ed è di sola lettura. Non c'è modo che cambierà mai. –

Problemi correlati