我正在寻找让包含类获取其包含类所暴露的隐含的最佳语法?
我的场景有两个抽象的依赖项用于测试:创建应用程序的actorsystem,以及一个恰好也需要actorsystem的webclient:
trait Core {
implicit def system: ActorSystem
}
trait WebClient {
implicit def system: ActorSystem
}
trait Api extends WebClient {
...
}
trait Server extends Core {
def api: Api
val service = system.actorOf(Props(new Service(api)))
}
现在,我创建了一个提供actorsystem和api的新应用程序,但是Api需要一个隐式actorsystem,而我想出的唯一方法是像这样手动提供它:
object ServerApp extends App with Core {
implicit val system = ActorSystem("foo")
val api = new Api {
override implicit def system = implicitly[ActorSystem]
}
}
有没有更好的语法让 WebClient 从 Core 中获取隐式?我不能让它扩展核心,因为它包含在核心实现中,并且需要作为包含在那里的其他东西的依赖项。但是对于应该是,呃,隐含override implict def system = implicitly[ActorSystem]
的东西似乎相当笨拙