我一直在使用Akka和Scala大约一个月,我有点担心用消息替换显式接口.考虑以下简单的Akka Actor:
case class DoMyHomework()
class Parent extends Actor {
def receive = {
case d: DoMyHomework => // do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
演员或非演员代码,发送此演员DoMyHomework消息,如下所示:
ActorRef parent = ...
parent.ask(DoMyHomework)
Run Code Online (Sandbox Code Playgroud)
不知道结果会是什么.答案的类型是什么?我能得到答案吗?我能得到例外吗?等等.
修复似乎是记录案例类...但如果其他一些actor也接收相同的案例类该怎么办.然后文档应该接收该消息应该在actor本身.
为了清理这一点,我想到了以下几点:
trait SomeoneSmarter {
def wouldYouDoMyHomework: Future[Boolean]
}
class Parent extends Actor with SomeoneSmarter {
case class DoMyHomework()
def wouldYouDoMyHomework = {
(self ? DoMyHomework()).mapTo(Boolean)
}
def receive = {
case d: DoMyHomework =>
// TODO: If I'm busy schedule a false "No way" reply for a few seconds …Run Code Online (Sandbox Code Playgroud)