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

标签 scala implicit

我目前正在使用一个代码库,该代码库需要一个显式参数才能对其部分实现具有隐式范围:

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

   // code using implicit ActorSystem ...
}

我有两个问题:
  • 是否有一种更简洁的方法可以将显式参数“提升”为隐式参数
    范围而不影响类的签名?
  • 一般建议是否 promise 始终通过隐式参数列表导入某些类型,例如 ActorSystem对于 Akka 应用程序?

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

    最佳答案

    你为什么不做systemImplicit私有(private)的 ?

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

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

    关于scala - 处理内部隐式参数列表所需的显式参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740760/

    相关文章:

    scala - 伴生对象中的隐式 View

    javascript - lift中生成JS时是否有JsAnd或JsOr?

    error-handling - lua协程的堆栈是隐式输入的,而没有调用恢复?

    scala - Slick:动态创建查询连接/分离

    eclipse - 在heroku上部署scalatra应用程序错误找不到插件

    scala - 找不到参数e的隐式值

    scala - 在 Scala 中省略括号

    c++ - 竞争隐式和模板复制构造函数

    Scala - 迭代器和可迭代的惰性 - 内存消耗

    scala - 在哪里搜索 Scala 语法 - 保留字、关键字、运算符?