我试图了解 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"
}
我想做的是拥有一组所有这些格式,因为我需要一个集合,其中每种格式只出现一次,所以我尝试了:
object MediaFormat {
val allFormats:Set[MediaFormat] = Set(H264_high,H264_low)
}
这给了我一个编译时异常,因为据我所知,Set 是不变的。
所以我想,我想我只需要使用一个 List 并自己管理重复的值
但后来我试试这个:
object MediaFormat {
val allFormats:List[MediaFormat] = List(H264_high,H264_low)
}
因为据我了解, List是协变的,但仍然无法编译。
有人可以帮助我了解我应该做些什么来收集我的格式吗?