2017-07-04 1 views
0

Je traversais le code source Akka, et je suis tombé sur les éléments suivantsScala - type imbriqué mot-clé

type Repr[+O] <: FlowOps[O, Mat] { 
    type Repr[+OO] = FlowOps.this.Repr[OO] 
    type Closed = FlowOps.this.Closed 
} 
type Closed 

Quelqu'un peut-il me expliquer ce qui se passe ici ??

Répondre

2
FlowOps[O, Mat] { 
    type Repr[+OO] = FlowOps.this.Repr[OO] 
    type Closed = FlowOps.this.Closed 
} 

est un compound type with a refinement. A savoir, FlowOps[O, Mat] à lui seul peut avoir n'importe quels membres de type Repr et Closed; ici nous avons besoin de ceux spécifiques. Ce type est utilisé comme limite supérieure pour le membre de type type Repr[+O].