我希望我的 traitOuter
有两个抽象成员类型Inner1
和Inner2
. 我也想Inner2
有抽象成员类型Inner1
。我想提出一个Outer#Inner1
等于的要求Inner2#Inner1
。最方便的方法是什么?到目前为止我有
trait HaveInner1 {
type Inner1
}
trait Outer {
type Inner1
type Inner2 <: HaveInner1
// require Inner1 == Inner2#Inner1;
def ?[T](implicit v: T): T = v
implicit var ev: Inner2#Inner1 =:= Inner1 = ?[Inner2#Inner1 =:= Inner1]
}
最后两个陈述不是那么漂亮。是否有更惯用的方式来处理同样的事情?