只是看着这个问题:removing redundant type in Interface。原来不可能消除C#中的类型参数T
。这与高等级的类型有关吗? Scala能解决这个问题吗?
答案 0 :(得分:1)
这与高等级的类型无关。问题是,IRevisionControl
需要了解T
吗?如果没有,您可以使用存在类型
trait Revision[RevisionType]
trait RevisionLog
trait RevisionControl[R <: Revision[_], L <: RevisionLog]
如果您需要T
,则必须将其添加为另一个类型参数...
trait RevisionControl[T, R <: Revision[T], L <: RevisionLog]
...或者您在Revision
...
trait Revision {
type RevisionType
}
trait RevisionControl[R <: Revision, L <: RevisionLog] {
def foo: R#RevisionType = ???
}