如何在Scala中附加隐式curried参数?

如何在Scala中附加隐式curried参数?,scala,functional-programming,slick,scalaz,Scala,Functional Programming,Slick,Scalaz,我正在使用具有以下方法签名的DAO库(ActiveSlick): def save(entity: Entity)(implicit exc: ExecutionContext): DBIO[Entity] 大多数都有一个隐含的curriedexcparam 我正在扩展该类,并希望将ExecutionContext附加到预定义的内容,例如:implicit val context=context.dbContext 此外,我还将纯方法包装在一个 def run[S] (action: DBI

我正在使用具有以下方法签名的DAO库(ActiveSlick):

def save(entity: Entity)(implicit exc: ExecutionContext): DBIO[Entity]
大多数都有一个隐含的curried
exc
param

我正在扩展该类,并希望将ExecutionContext附加到预定义的内容,例如:
implicit val context=context.dbContext

此外,我还将纯方法包装在一个

 def run[S] (action: DBIO[S]): Future[Try[S]] =  db.run(action.asTry)
然而,隐式上下文并没有被客户机代码接受

我能做的是:

def run[S] (action: ExecutionContext => DBIO[S]): Future[Try[S]] =  db.run(action(context).asTry)
但这很难看,因为我必须在客户机代码中明确使用:

dao.run (dao.insert(entity)(_))
我的问题是,我是否可以在类中附加隐式的
ExecutionContext
参数,以便调用总是干净的(er):

我听说
阅读器
monad可以做这样的事情。。但事实证明,摸索是相当困难的


谢谢

定义如下特征,并在任何需要的地方进行混合:

trait ExeContext {
  implicit def exe: ExecutionContext
  //Methods that use the implicit exe
}

我不想覆盖所有的方法,但要找到问题的通用解决方案。通过覆盖,我的意思是,例如:
覆盖def insert(entity:entity)(隐式ctx:ExecutionContext)=super.insert(entity)(context)
对不起,def应该是:
。。。(implicit-ctx:ExecutionContext=someDefinedCtx)
不幸的是,这不会将隐式方法传播到方法调用站点。一个复杂的情况可能是我在描述一个基类,但我也在子类中添加了一个隐式上下文——但在调用站点上仍然缺少它。每次我找不到另一个解决方案时,都无法导入它。
trait ExeContext {
  implicit def exe: ExecutionContext
  //Methods that use the implicit exe
}