繁体   English   中英

我有一个带有隐式参数的函数。 如何使用某个类实例的隐式参数隐式传递参数?

[英]I have a function which takes an implicit parameter. How can I pass the parameter implicitly using implicit parameters of an instance of some class?

这是功能:

def execute[T, U, F[_]](t: T)(implicit
                                executor: Executor[F],
                                functor: Functor[F],
                                handler: Handler[T, U],
                                manifest: Manifest[U]): F[Response[U]] = {(do something)}

我有一个ElasticSearchRepositoryWrapper类,它继承自某个地方(我无法从哪里找到) handler变量。 我有一个类repo = ElasticSearchRepositoryWrapper(client, config, configName)的实例
我想这样做:

class SomeService(val config: Config,
                             val configName: String = "products",
                             val client: ElasticClient)
                            (implicit val ec: ExecutionContext)
{
    repo = ElasticSearchRepositoryWrapper(client, config, configName)
    repo.client.execute {
      repo.delete(something)
    }
}

但它说, No implicits found for parameter handler: Handler[..., ...] for execute function
那么,我怎样才能将该handlerrepo传递给它呢?
注意:如果类SomeService继承自ElasticSearchRepositoryWrapper ,它会找到它。

我不确定execute的第一个参数是什么。 看起来它想要一些t ,但你传递的是一个块(并不是说它一定是错误的,但有点奇怪)。 但是,假设这确实是你想要的,并且repo.handler是可访问的,你可以像这样传递它:

  repo.client.execute(repo.delete(something))(ec, implicitly, repo.handler, implicitly)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM