【问题标题】:Dealing with explicit parameters required by inner implicit parameter lists处理内部隐式参数列表所需的显式参数
【发布时间】:2014-05-19 14:47:04
【问题描述】:

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

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

   // code using implicit ActorSystem ...
}

我有两个问题:

  1. 有没有一种更简洁的方法可以将显式参数“提升”为隐式参数 范围而不影响类的签名?

  2. 一般建议是否承诺总是通过隐式参数列表导入某些类型,例如 Akka 应用程序的 ActorSystem

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

【问题讨论】:

  • 似乎将system: ActorSystem not 隐含并没有任何好处。您始终可以覆盖隐式参数。对于您的问题,我会说 nomaybe

标签: scala implicit


【解决方案1】:

为什么不将 systemImplicit 设为私有?

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

   // ...
}

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

【讨论】:

  • 我宁愿只发表评论,但我还没有足够的声誉......希望这能回答你的第一个问题。
  • +1 改进了我原来的方法,但原来问题中的所有内容仍然存在 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多