Рассмотрим эти две черты:
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)
}
Теперь рассмотрим, что я могу создать нового Актера, который реализует обе черты:
val peekedpoked = actorRef(new Actor extends Poked with Peeked)
Как составить обработчики приема? то есть приемник должен быть чем-то вроде следующего кода, хотя "автоматически сгенерирован" (т.е. все признаки должны составлять):
def receive = (Poked.receive: Receive) orElse (Peeked.receive: Receive) orElse ...