私はScalaのコレクションの共分散に頭を悩ませようとしています。私は次のものを持っています:
abstract class MediaFormat{
def name:String
def status:String
}
case class H264_high(status:String="on") extends MediaFormat {
def name = "h264_high"
}
case class H264_med(status:String="on") extends MediaFormat {
def name = "h264_med"
}
case class H264_low(status:String="on") extends MediaFormat {
def name = "h264_low"
}
case class H264_syndication(status:String="off") extends MediaFormat {
def name = "h264_syndication"
}
私がやりたかったのは、これらすべての形式のセットを用意することでした。各形式が1回だけ発生するコレクションが必要なので、次のことを試しました。
object MediaFormat {
val allFormats:Set[MediaFormat] = Set(H264_high,H264_low)
}
私が今理解しているように、Setは不変であるため、これによりコンパイル時の例外が発生しました。
ですから、リストを使用して、繰り返される値を自分で管理する必要があると思います。
しかし、私はこれを試します:
object MediaFormat {
val allFormats:List[MediaFormat] = List(H264_high,H264_low)
}
私が理解しているように、Listは共変ですが、それでもコンパイルされません。
誰かが私のフォーマットのコレクションを取得するために何をすべきかを理解するのを手伝ってもらえますか?