Scala trovato List e SeqProjection, quando richiesto Seq e Set
Domanda
Seduto con il seguente errore:
TestCaseGenerator.scala:47: error: type mismatch;
found : List[(State, Seq.Projection[State])]
required: Seq[(State, Set[State])]
new LTS(Map(rndTrans: _*), Map(rndLabeling: _*))
^
one error found
Non riesco a capire cosa fare al riguardo.
Il rndTrans
viene inizializzato come segue:
val rndTrans = for (s <- (0 to nStates).toList)
yield (new State(s) -> (for (s2 <- 0 to nStates
if prob(trans_probability))
yield new State(s2)))
Aggiornamento: mi capita di essere utilizzando la versione 2.7
.Soluzione
Quando un metodo toSet
(o toMap
) non è disponibile (perché uno è in esecuzione una versione precedente di scala o perché la conversione è solo non implementato), si può applicare spesso uno dei seguenti schemi.
val collection: Seq[SomeType] = ...
Set( collection: _* )
o
Set() ++ collection
La prima versione utilizza il :_*
per convertire la collezione ad un argomento sequenza e poi chiama un metodo di costruzione del nuovo tipo di raccolta. Il secondo metodo ha creato un insieme vuoto del nuovo tipo e quindi aggiunge (++
) Il centro di raccolta ad esso.
Altri suggerimenti
In genere un Seq
non è un Set
. Prova a convertire la sequenza di valore ad un set.
val rndTrans = for (s <- (0 to nStates).toList)
yield (new State(s) -> (for (s2 <- 0 to nStates
if prob(trans_probability))
yield new State(s2)).toSet)