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

abstract class SuperClass[T] 

class Impl extends SuperClass[P] with Mixin 

donne:Paramétrer super classe avec un membre de classe de classe mixin

not found: type P 

Est-il possible de fournir la classe membre P qui est mélangé comme paramètre à une super classe, ou est-ce impossible à cause d'une commande d'évaluation (ou d'un autre problème?).

+0

Que voulez-vous que «P» soit ici? 'Mixin # P'? Pas sûr que je suis. –

+0

Le cas d'utilisation est un schéma Slick. 'P' est la sous-classe de' Table'. 'P 'doit être défini dans le contexte d'une classe telle que les imports peuvent être correctement définis afin que Slick puisse fonctionner avec un" profil "donné. –

Répondre

1

De cette façon, les oscilloscopes ne fonctionnent pas correctement. Mais les membres du type et des paramètres de type sont presque équivalents, et si vous pouvez faire T un membre de SuperClass à la place, vous obtenez

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

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

Dans les cas où vous voulez T à utiliser comme paramètre générique, vous utilisez SuperClass.Aux[T].