将特质混合到自己的外层

时间:2014-11-04 22:29:10

标签: scala

考虑一些具有多个内部类的类。共同的功能被分解为特征。

case class A[T](a: T) {
    case class B(b: T) extends Inner
    case class C(c: T) extends Inner

    trait Inner {
        case class D(d: T)
    }
}

有没有办法将特质Inner混合到自己的父级A中?

// compile error "this can be used only in a class, object, or template.
case class A[T](a: T) extends this.Inner {
  ...
}

// compile error "not found: value self"
case class A[T](a: T) extends self.Inner { self =>
  ...
}

// compile error "illegal cyclic reference involving class A"
case class A[T](a: T) extends A[T]#Inner {
  ...
}

0 个答案:

没有答案