2017-10-04 178 views
1
trait Mixin { 
    class P 
} 

abstract class SuperClass[T] 

class Impl extends SuperClass[P] with Mixin 

的类成员参数化超级类得到:与混合类

not found: type P 

是否有任何方式来提供构件类P其混合在作为参数传递给一个超类,或这是不可能因为评估的顺序(或其他一些问题?)。

+0

你会期待'P'在这里? '密新#P'?不知道我跟着。 –

+0

用例是一个Slick模式。 'P'是'Table'的子类。必须在类的上下文中定义“P”,以便可以正确定义导入,因此Slick可以使用给定的“配置文件”。 –

回答

1

这样,范围无法正常工作。但是,类型成员和类型的参数几乎是等价的,如果你可以让TSuperClass一个成员,而不是,你

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]