gpt4 book ai didi

scala - 访问 trait 中的现有 ActorSystem

转载 作者:行者123 更新时间:2023-12-01 09:25:29 24 4
gpt4 key购买 nike

我将 Spray 用于 REST 端点。如何访问 trait 中现有的 ActorSystem
我不想在我的 trait 中创建一个新的 ActorSystem(如果可能的话),而是重用我现有的 ActorSystem。我正在使用 this Redis 客户端库。

trait MySprayService extends HttpService with Json4sSupport {

//the following line requires an implicit ActorSystem
val redis = RedisClient(ip,port)
....
....
val simpleRoute = path("simple" / "route") {
get {
complete {
//use Redis here
}
}
}

}

最佳答案

实现相同目的的另一种方法是使用自类型注释。

trait MySprayService extends HttpService with Json4sSupport {
this: Actor =>
implicit val sys = context.system
val redis = RedisClient(ip,port)
.....

通过 self-type 声明,您指定从该 trait 扩展的类也必须从 Actor 扩展(无论如何它都会这样做以运行路由)。否则编译器会产生错误。在 self 类型声明之后,您可以继续使用 Actor 的任何成员。

这样,就没有额外的方法可以实现了。

关于scala - 访问 trait 中的现有 ActorSystem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472019/

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