Как использовать составную черту с актерами Акки?
Я пытаюсь реализовать черту Pub / Sub, чтобы смешивать ее с другими актерами akka, используя черту стека.
Вот что я придумал:
trait PubSubActor extends Actor {
abstract override def receive =
super.receive orElse {
case Subscribe(topic) => /* ... */
case Publish(topic, msg) => /* ... */
}
}
class MyActor extends Actor with PubSubActor {
override def receive = {
case SomeMessage(a, b, c) => /* ... */
}
}
В этот момент компилятор возвращает ошибку error: error: переопределенный метод receive в признаке MyActor ... метод receive нуждается в модификаторах абстрактного переопределения.
Можете ли вы объяснить мне, почему это не работает? Как я могу это исправить, чтобы он работал?
Спасибо!
ОБНОВИТЬ
Следующие работы:
trait PubSubActor extends Actor {
abstract override def receive =
super.receive orElse {
case Subscribe(topic) => /* ... */
case Publish(topic, msg) => /* ... */
}
}
class MyActor extends Actor {
override def receive = {
case SomeMessage(a, b, c) => /* ... */
}
}
class MyActorImpl extends MyActor with PubSubActor
Но почему? Почему я могу получить поведение, которое хочу таким, а не другим? Какие-либо причины? Я не могу понять разницу между этими двумя образцами, которая имеет значение.