Scala нашел список и SEQProjection, когда требуется SEQ и установить
Вопрос
Сидеть со следующей ошибкой:
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
Не могу понять, что делать с этим.
То rndTrans
инициализируется следующим образом:
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)))
Обновление: я должен использовать версию 2.7.
Решение
Когда toSet
метод (или toMap
) недоступен (потому что один работает старшая версия Scala или потому, что преобразование просто не реализуется), часто можно применять одну из следующих схем.
val collection: Seq[SomeType] = ...
Set( collection: _* )
или
Set() ++ collection
Первая версия использует :_*
Чтобы преобразовать коллекцию на аргумент последовательности, а затем вызывает метод конструктора нового типа коллекции. Второй метод создал пустую коллекцию нового типа, а затем добавляет (++
) старая коллекция к нему.
Другие советы
Вообще а Seq
это не Set
. Отказ Попробуйте преобразовать последовательность значения на набор.
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)
Не связан с StackOverflow