gpt4 book ai didi

scala - 值(value) !不是 Actor 的成员

转载 作者:行者123 更新时间:2023-12-04 17:53:31 25 4
gpt4 key购买 nike

我有一个管理 Actor 列表的 Actor 类。当它接收到某种类型的消息时,它会将它传递给它知道的每个 Actor。

 var loggers : List[Logger]    

def receive = {
...
// log request
case logmessage : LogMessage => {
// send message to each logger (if none, nothing happens)
for (logger <- loggers)
logger ! logmessage
}
...
}

我在 logger ! logmessage 上遇到编译错误:“值!不是(包)的成员。Logger”。这 !谷歌很难做到这一点。 Logger 类编译,有自己的接收方法,一行包括 self ! PoisonPill ,意思是 !运算符(operator)在那里工作。它们在同一个包中。

最佳答案

我假设 Logger extends Actor
在 Akka 中,消息发送是在 ActorRef 之间完成的,而不是 Actor 之间。每个 Actor 的 self 都是一个 ActorRef 实例。因此,您可能希望将记录器 var 更改为 var loggers: List[ActorRef]

更好的是,您可以使用 ActorSelection ,它有一个 ! 方法,可以将消息发送到选择中的所有角色引用。您可以在 Actor 的 ActorSelection 中找到创建 context 的方法。

附言您可以使用 Akka Scaladocs 上的 "#" page 来查找以符号开头的方法。在该页面上,您可以看到在 !ScalaActorRef 上定义了一个 ScalaActorSelection ,它们都是 ActorRefActorSelection 的隐式升级。

关于scala - 值(value) !不是 Actor 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20497670/

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