Scala нашел список и SEQProjection, когда требуется SEQ и установить

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

  •  26-09-2019
  •  | 
  •  

Вопрос

Сидеть со следующей ошибкой:

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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top