gpt4 book ai didi

scala - 作曲 Actor

转载 作者:行者123 更新时间:2023-12-04 07:29:46 25 4
gpt4 key购买 nike

我已经实现了一个可以添加到 Actors 的 Listenable/Listener 特性。我想知道是否可以将这种风格的特征附加到 Actor 而不必显式调用 listenerHandler 方法?

我也期待在 Akka 库中找到这个功能。我是不是遗漏了什么,还是有什么原因 Akka 不包括这个?

trait Listenable { this: Actor =>
private var listeners: List[Actor] = Nil

protected def listenerHandler: PartialFunction[Any, Unit] = {
case AddListener(who) => listeners = who :: listeners
}

protected def notifyListeners(event: Any) = {
listeners.foreach(_.send(event))
}
}

class SomeActor extends Actor with Listenable
{
def receive = listenerHandler orElse {
case Start => notifyListeners(Started())
case Stop => notifyListeners(Stopped())
}
}

最佳答案

为什么不扩展 Actor直接,或者如果您希望非 Actor 也可听,请创建一个 ListenableActor 用 Listenable 扩展 Actor?

然后您将覆盖 receive在 Actor 中,正如您在上面所做的那样(除了您还想调用 super.receive,不是吗?--您只想修改传入的函数)。

关于scala - 作曲 Actor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com