Scala encontró Lista SeqProjection y, cuando sea necesario Sec y Set
Pregunta
Sentado con el error siguiente:
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
No se puede averiguar qué hacer al respecto.
El rndTrans
se inicializa como sigue:
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)))
Actualización: Me sucede utilizar la versión 2.7
.Solución
Cuando un método toSet
(o toMap
) no está disponible (debido a que uno se está ejecutando una versión anterior de Scala o porque la conversión es simplemente no implementado), uno puede a menudo se aplica uno de los siguientes esquemas.
val collection: Seq[SomeType] = ...
Set( collection: _* )
o
Set() ++ collection
La primera versión utiliza el :_*
para convertir la colección a un argumento secuencia y luego llama a un método constructor del nuevo tipo de colección. El segundo método crea una colección vacía del nuevo tipo y luego añade (++
) la antigua colección a la misma.
Otros consejos
En general, un Seq
no es un Set
. Trate de convertir la secuencia de valores a un conjunto.
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)