使用 mixin class 的 class 成员参数化 super class

Parameterise super class with class member of mixin class

trait Mixin {
    class P
}

abstract class SuperClass[T]

class Impl extends SuperClass[P] with Mixin

给出:

not found: type P

有没有办法提供成员 class P 作为参数混入超级 class,或者这是不可能的,因为评估的顺序(或其他问题?)。

这样示波器就无法正常工作了。但是类型成员和类型参数几乎是等价的,如果你可以让 T 成为 SuperClass 的成员,你会得到

abstract class SuperClass {
  type T
}
// optional
object SuperClass {
  type Aux[T0] = SuperClass { type T = T0 }
}

class Impl extends SuperClass with Mixin {
  type T = P
}

在您希望将 T 用作通用参数的情况下,您可以使用 SuperClass.Aux[T].