只是在看这个问题:删除 Interface 中的冗余类型。事实证明不可能消除T
C# 中的类型参数。这与更高种类的类型有关吗?Scala 能解决这个问题吗?
问问题
85 次
1 回答
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 = ???
}
于 2013-07-28T21:43:56.013 回答