我处于想要创建一个不可变的集合和一个可变的状态。它们都共享一些与不变性无关的部分。也许我应该潜入并且看看Scala集合是如何实现的,但我并不想创建一个完整的集合类型。斯卡拉类型问题
我现在有这个权利,但感觉不太对劲。
trait StyleMapping[T <: Style[T]] {
type Mappings <: scala.collection.Map[Option[String], T]
val mappings: Mappings
def get(classNames: List[String]): Option[T] = {
mappings.get(...) // Do something here.
}
}
,这是一个不变的实现的例子:
class ImmutableStyleMapping[T <: Style[T]](
val mappings: Map[Option[String], T)
extends StyleMapping[T] {
type Mappings = Map[Option[String], T]
}
这工作,但感觉就像我重复类型遍布代码。抽象类型是最好的方式,还是应该以不同的方式进行设计?对于如何以不同的方式完成这项工作,我们将不胜感激。
为什么downvote? – huynhjl 2011-05-26 15:35:37
你的问题到底是什么?它是如何避免一遍又一遍地重复类型? – pedrofurla 2011-05-26 15:41:45
@huynhjl,这不是我的,但我不反对。 @ chrsan想要学习的内容并不十分清楚。 – pedrofurla 2011-05-26 15:43:04