У меня есть функция, которая принимает неявный параметр. Как я могу передать параметр неявно, используя неявные параметры экземпляра некоторого класса? - PullRequest
0 голосов
/ 20 января 2020

Это функция:

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[..., ...] для execute функция
Итак, как я могу передать это handler от repo до него?
Примечание: если класс SomeService наследует от ElasticSearchRepositoryWrapper, он находит его.

1 Ответ

2 голосов
/ 20 января 2020

Я не уверен, что является первым параметром execute. Похоже, что он хочет немного t, но вы проходите в блоке (не говоря, что это обязательно неправильно, но немного странно). Но, предполагая, что это действительно то, что вы хотите, и repo.handler доступен, вы можете передать это так:

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