我希望我的 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]
}
最后两个陈述不是那么漂亮。是否有更惯用的方式来处理同样的事情?