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.

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top