2017-10-04 236 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]