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)
有没有办法避免这样的代码?
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)