case class 内部隐含的显式参数

case class explicit parameters that are implicit inside

有没有办法避免这样的代码?

case class Foo(bar: Int, baz: String, ec: ExecutionContext) {
  implicit val implicitEc = ec  

  .... 
}

在参数列表的前面添加 implicit 具有与预期不同的效果。我希望 executionContext 是构造函数的显式参数,但被视为 class 体内的隐式变量。

case class Foo(bar: Int, baz: String, implicit val ec: ExecutionContext)

有效。请注意,它不能应用于第一个参数。在那种情况下,我会使用您的原始代码(除了使用 implicit private def 而不是 implicit val,因此您不会创建额外的字段并且不会污染 API)。如果你有多个这样的 类,这个解决方案应该有效(根据口味调整名称):

abstract class MakeTheParameterImplicit[A](implicit protected val dontOverrideInChildren: A)

case class Foo(ec: ExecutionContext) extends MakeTheParameterImplicit[ExecutionContext]()(ec)