处理内部隐式参数列表所需的显式参数

Law*_*eld 8 scala implicit

我目前正在使用一个代码库,该代码库需要一个显式参数来为其实现的部分内容提供隐式范围:

class UsesAkka(system: ActorSystem) {
   implicit val systemImplicit = system

   // code using implicit ActorSystem ...
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 是否有一种更简洁的方法可以在不影响类的签名的情况下将显式参数"提升"到隐式范围?

  2. 一般建议是否承诺始终通过隐式参数列表导入某些类型,例如ActorSystemAkka应用程序?

从语义上讲,我觉得有一种类型的显式依赖可能是另一种类型的隐式依赖,但翻转implicit切换似乎对整个代码库产生了系统性影响.

Ale*_*ult 1

为啥不systemImplicit私有化呢?

class UsesAkka(system: ActorSystem) {
   private implicit val systemImplicit = system
// ^^^^^^^

   // ...
}
Run Code Online (Sandbox Code Playgroud)

这样,您就不会更改 的签名UsesAkka