2012-07-11 17 views

risposta

3

No, il # è un tipo di proiezione. Nel tuo caso, tuttavia, ciò non funziona perché K non definisce alcun tipo di BAR.

trait A { 
      type T 
      def apply():T 
} 

trait MyClass[X<:A] { 
       type SomeType = X#T 
       def applySeq():Traversable[SomeType] 
} 


class AImpl extends A { 
     type T=Int 
     def apply():Int = 10 
} 

class MyClassImpl extends MyClass[AImpl] { 
     def applySeq(): Traversable[SomeType] = List(10) 
} 

Questo in pratica consente di utilizzare il tipo T in A all'interno di MyClass.

In realtà, anche la seguente compilazione:

class MyClassImpl extends MyClass[AImpl] {def applySeq(): Traversable[Int] = List(10)} 
Problemi correlati