Scala encontrou lista e seqprojeção, quando necessário seq e definido
Pergunta
Sentado com o seguinte erro:
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
Não consigo descobrir o que fazer sobre isso.
o rndTrans
é inicializado da seguinte maneira:
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)))
ATUALIZAÇÃO: Por acaso, estou usando a versão 2.7.
Solução
Quando um toSet
Método (ou toMap
) não está disponível (porque se está executando uma versão mais antiga do Scala ou porque a conversão simplesmente não é implementada), geralmente se pode aplicar um dos esquemas a seguir.
val collection: Seq[SomeType] = ...
Set( collection: _* )
ou
Set() ++ collection
A primeira versão usa o :_*
Para converter a coleção em um argumento de sequência e depois chama um método construtor do novo tipo de coleção. O segundo método criou uma coleção vazia do novo tipo e depois adiciona (++
) A antiga coleção para ela.
Outras dicas
Geralmente a Seq
não é um Set
. Tente converter a sequência de valor em um 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)