Scala は、必要に応じて、List と SeqProjection を見つけました。Seq と Set

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

最初のバージョンでは、 :_* コレクションをシーケンス引数に変換し、新しいコレクション型のコンストラクター メソッドを呼び出します。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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top