0

坐着出现以下错误:

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 版。

4

2 回答 2

4

toSet方法(或toMap)不可用时(因为正在运行旧版本的 scala 或因为转换未实现),通常可以应用以下方案之一。

val collection: Seq[SomeType] = ...

Set( collection: _* )

或者

Set() ++ collection

第一个版本使用:_*将集合转换为序列参数,然后调用新集合类型的构造方法。第二种方法创建了一个新类型的空集合,然后将++旧集合添加到其中。

于 2010-11-18T20:10:52.133 回答
2

通常 aSeq不是 a 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)
于 2010-11-18T19:34:58.617 回答