2012-07-11 11 views

Respuesta

3

No, el # es una proyección de tipo. En su caso, sin embargo, eso no funciona porque K no define ningún tipo de 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) 
} 

Que básicamente le permite usar el tipo T en A dentro de MyClass.

De hecho, también la siguiente compilación:

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