2011-09-23 10 views
21

Tengo un rasgo que se implementa a partir de algunos otros rasgos. Cada uno de estos rasgos sobrescribir el comportamiento de la supertrait y se mezclan en una clase:¿Cómo acceder a uno de los múltiples rasgos de la superclase?

trait T { 
    def name = "t" 
} 
trait T1 extends T { 
    abstract override def name = "t1" 
} 
trait T2 extends T { 
    abstract override def name = "t2" 
} 
class C extends T with T1 with T2 { 
    def printName = super.name 
} 

Ahora, en la clase C quiero acceder a la conducta no del último rasgo mixta-in, pero el comportamiento de uno de estos rasgos. es posible?

Respuesta

26

Es posible especializarse los super-llamada a un rasgo específico:

class C extends T with T1 with T2 { 
    def printName = super[T1].name 
} 
+10

Esto sólo es posible si el 'T1' anterior es un rasgo muy directa. – axel22

+2

+1, chorizos sagrados, nunca supe de esta función. – missingfaktor

+0

La pregunta y la respuesta, ¿ambas por la misma persona? – Nawaz

Cuestiones relacionadas