2014-09-11 4 views
3

Je suis assez nouveau à la Scala.Où est la classe akka Receive defined?

Dans un de la classe Acteur, j'ai voir mon collègue définir le code comme ceci

importation akka.actor.Actor

class Processor extends Actor { 

    def receive: Receive = { 
    case msg: String => doProcess(msg) 
    case _ => 
    } 
} 

Où est cette classe de réception définie? Il n'est pas importé dans cette classe. Comment le système trouve-t-il la classe Receive?

+0

Pourquoi ne pas vous acceptez la réponse ... –

Répondre

6

Il est un alias de type pour PartialFunction[Any, Unit] défini à l'intérieur de l'objet compagnon et du trait akka.actor.Actor respectivement.

Extrait du source code:

object Actor { 
    // Type alias representing a Receive-expression for Akka Actors. 
    type Receive = PartialFunction[Any, Unit] 
    // ... 
} 

trait Actor { 
    // to make type Receive known in subclasses without import 
    type Receive = Actor.Receive 
    // ... 
} 
1

Receive est un alias de type pour PartialFunction[Any,Unit]. Ce type d'alias est défini sur l'objet compagnon Actor qui est ensuite redéfini sur le trait Actor (donc disponible dans Actor impls) en référence à celui défini sur le compagnon.

1

Recevoir est un alias de type pour fonction partielle [Tout, Unité]

Voir le code source Acteur here

Vous pouvez également écrire la méthode recevoir comme

def receive: PartialFunction[Any, Unit] = { 
    …. 
} 
Questions connexes