0
只看這個問題:removing redundant type in Interface。原來在C#中無法消除類型參數T
。這與更高級的類型有關嗎? Scala解決這個問題嗎?斯卡拉會在這裏消除重複的需要嗎?
只看這個問題:removing redundant type in Interface。原來在C#中無法消除類型參數T
。這與更高級的類型有關嗎? Scala解決這個問題嗎?斯卡拉會在這裏消除重複的需要嗎?
這與高等親類型無關。問題是,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 = ???
}