2011-12-16 28 views
5

Duplicar posibles:
What does “outer =>” really mean?¿Para qué se usa el auto =>?

Cuando miro en el código fuente de: Scala/src/biblioteca/Scala/Option.scala

sealed abstract class Option[+A] extends Product with Serializable { 
    self => 

vago para qué se usa el yo Sé que el uso normal del mismo tipo es restringir la clase del rasgo puede ser mezclado en tales como:.

scala> trait A 
defined trait A 

scala> trait NeedA {self: A =>} 
defined trait NeedA 

scala> new NeedA {} 
<console>:10: error: illegal inheritance; 
self-type java.lang.Object with NeedA does not conform to NeedA's selftype NeedA with A 
       new NeedA {} 
       ^

scala> new NeedA with A {} 
res39: java.lang.Object with NeedA with A = [email protected] 

scala> 

pero el "este =>" no es el caso. ¿Para qué sirve este "this =>"?

Respuesta

5

Se crea un alias para esto, que puede ser útil en las clases internas (sinónimo de OuterClass.this)

class A {self => 
    ... 
    class B { 
     // self is the enclosing A, synonymous for A.this 
    } 
}