これがなぜ機能しないのか理解してもらえますか? Scalaのバージョン2.10マップ上のキーとしての特性をスカラでシールすると、不一致エラーが発生する
object ColorEnum {
sealed trait Color
case object Red extends Color
case object Blue extends Color
case object Green extends Color
}
キーなどの色や値として文字列を受け取り地図の作成は
val colorMap = mutable.HashMap[ColorEnum.Color, String]()
キー
colorMap.put(ColorEnum.Red, "Foo")
このようColorEnumを使用して地図上のアイテムを置きます例外をスローする
error: type mismatch
found: ColorEnum.Red.type
required: ColorEnum.Color
これはどのように動作するのか分かっています。
おかげ
他の関連トピックへのリンクを提供することで、ケースクラスをキーとして使用する方法の例を既に公開しています。 – Kamil
これは私のためにコンパイルします。これはあなたが使用しているコードですか? –
'object ColorEnum'階層の外にtraitとcaseオブジェクトを定義するとします。次に、 'colorMap.put(Red、" Foo ")'を使ってマップを 'val colorMap = mutable.HashMap [Color、String]()'として定義します。封印された特性を作成するColorEnum内のColorオブジェクトとCaseオブジェクトは、少なくとも私にとっては機能しません。 – user943583