我正在寻找包含类的最佳语法,以获取其包含类所暴露的含义?
我所拥有的场景有两个用于测试的依赖项:应用程序的actor系统的创建,以及恰好需要actor系统的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)))
}
现在,我创建了一个提供actor系统和api的新App,但是Api需要一个隐含的actor系统,而我想出的唯一方法是手动提供它:
object ServerApp extends App with Core {
implicit val system = ActorSystem("foo")
val api = new Api {
override implicit def system = implicitly[ActorSystem]
}
}
是否有更好的语法让WebClient从Core获取隐式?我无法扩展Core,因为它包含在Core实现中,并且需要作为其中包含的其他内容的依赖项。但是override implict def system = implicitly[ActorSystem]
似乎对于应该是,呃,隐含
答案 0 :(得分:2)
你隐藏了隐含的值,因为它们具有相同的名称。
您可以考虑
class Api()(implicit val system: ActorSystem)
和
val api = new Api