Frage

Sitze mit dem folgenden Fehler:

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

Kann nicht herausfinden, was zu tun ist.

Die rndTrans initialisiert wird, wie folgt:

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

Update: ich zufällig mit der Version 2.7 wird

.
War es hilfreich?

Lösung

Wenn eine toSet Methode (oder toMap) nicht verfügbar ist (weil man eine ältere Version von scala läuft oder weil die Umwandlung ist einfach nicht implementiert), kann man oft eine der folgenden Regelungen gilt.

val collection: Seq[SomeType] = ...

Set( collection: _* )

oder

Set() ++ collection

Die erste Version verwendet die :_* die Sammlung zu einer Sequenz Argument zu konvertieren und ruft dann einen Konstruktor des neuen Kollektion Typs. Die zweite Methode erstellt eine leere Auflistung des neuen Typs und fügt dann hinzu (++) die alte Sammlung zu.

Andere Tipps

Im Allgemeinen wird eine Seq ist kein Set. Versuchen Sie, die Wertfolge auf einen Satz zu konvertieren.

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top