0

只是在看这个问题:删除 Interface 中的冗余类型。事实证明不可能消除TC# 中的类型参数。这与更高种类的类型有关吗?Scala 能解决这个问题吗?

4

1 回答 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 回答