Scala et trouvé Liste SeqProjection, lorsque cela est nécessaire et Seq Set

StackOverflow https://stackoverflow.com/questions/4218430

  •  26-09-2019
  •  | 
  •  

Question

Assis avec l'erreur suivante:

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

ne peuvent pas comprendre ce qu'il faut faire à ce sujet.

Le rndTrans est initialisé comme suit:

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

Mise à jour: J'arrive d'utiliser la version 2.7

.
Était-ce utile?

La solution

Quand une méthode toSet (ou toMap) ne sont pas disponibles (parce que l'un est en cours d'exécution d'une ancienne version de scala ou parce que la conversion est tout simplement pas mis en œuvre), on peut souvent appliquer l'un des régimes suivants.

val collection: Seq[SomeType] = ...

Set( collection: _* )

ou

Set() ++ collection

La première version utilise le :_* pour convertir la collection à un argument de séquence et appelle une méthode constructeur du nouveau type de collection. La deuxième méthode a créé une collection vide du nouveau type et ajoute (++) l'ancienne collection à elle.

Autres conseils

En général, une Seq n'est pas un Set. Essayez de convertir la séquence de valeurs d'un ensemble.

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top