Scala会不会在这里消除重复的需要?

时间:2013-07-28 21:32:54

标签: scala higher-kinded-types

只是看着这个问题:removing redundant type in Interface。原来不可能消除C#中的类型参数T。这与高等级的类型有关吗? Scala能解决这个问题吗?

1 个答案:

答案 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 = ???
}