Considerare questi due tratti:Composizione comportamento tratto a Scala in un Akka ricevono metodo
trait Poked extends Actor {
override def receive = {
case Poke(port, x) => ReceivePoke(port, x)
}
def ReceivePoke(port: String, x: Any)
}
trait Peeked extends Actor {
override def receive = {
case Peek(port) => ReceivePeek(port)
}
def ReceivePeek(port: String)
}
Consideriamo ora posso creare un nuovo attore che implementa entrambi i caratteri:
val peekedpoked = actorRef(new Actor extends Poked with Peeked)
Come faccio a comporre la ricevere gestori? vale a dire, il ricevitore deve essere qualcosa come il seguente codice, anche se "generata automaticamente" (vale a dire, tutti i tratti devono comporre):
def receive = (Poked.receive: Receive) orElse (Peeked.receive: Receive) orElse ...
Questo è molto interessante, si :-) grazie Ma esso presuppone la preesistenza di un tipo IntOrString che è sia un int e una stringa, e che IntOrString sa che dovrebbe comporre quelli (che, se sto costruendo un quadro, l'altro può ignorare). Non è possibile comporre automaticamente i tratti IntActor e StringActor? –
L'ordine è dato dalla linearizzazione dei tratti misti, quindi "prevedibile" ;-) E usando le corrispondenze in prepending l'override dei tratti successivi wrt. quelli precedenti, quindi penso che la tua soluzione sia molto bella! –
Eccellente display del tuo scala-fu! :-) –