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

.
È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top