Scala は、必要に応じて、List と SeqProjection を見つけました。Seq と Set
質問
次のエラーが発生して座っています。
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
最初のバージョンでは、 :_*
コレクションをシーケンス引数に変換し、新しいコレクション型のコンストラクター メソッドを呼び出します。2 番目のメソッドは、新しい型の空のコレクションを作成し、(++
) 古いコレクションをそれに追加します。
他のヒント
一般的には 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