我在寻找包含类的最佳语法,以获取它们包含的类所公开的隐式?
在我的场景中,有两个抽象的依赖项用于测试:创建应用程序的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中提取隐式内容?我不能让它扩展Core,因为它包含在Core实现中,并且需要作为包含在其中的其他东西的依赖项。但是override implict def system = implicitly[ActorSystem]似乎在一些应该是,呃,隐含的事情上受到了很大的阻碍。
发布于 2014-09-02 02:56:28
您正在隐藏隐式值,因为它们具有相同的名称。
你可能会考虑
class Api()(implicit val system: ActorSystem)和
val api = new Apihttps://stackoverflow.com/questions/25614398
复制相似问题