Тип функции с неявными параметрами в Scala
Я хотел бы иметь функцию более высокого порядка, которая принимает в качестве параметра функцию, которая принимает определенный неявный параметр.
Чтобы быть более точным, я пытаюсь сделать функцию, которая принимаетFuture
метод создания, который зависит от неявного контекста и возвращает метод, который не зависит от контекста.
Чтобы быть более конкретным, скажем, что у меня есть что-то вроде этого:
def foo(a: Int)(implicit ctx: ExecutionContext): Future[Float] = future { somelongBar... }
Я хотел бы иметь такой метод:
def provideCtx[A](func: ExecutionContext => A): A = {
val ctx = setupCtx
func(ctx)
}
но если я позвонюprovideCtx(foo)
Компилятор жалуется на отсутствие неявного контекста выполнения.
Тот факт, что я имею дело с ExecutionContext, не очень важен. Я хотел бы узнать, как написать тип параметра для приема функции с неявным аргументом определенного типа. Я понимаю, что неявная часть является аргументом карри, так что на самом деле у меня есть такая функция:ExecutionContext => Int => Future[Float]
и я совершенно уверен, что во время выполнения jvm не знает, что этот ExecutionContext неявный, но я не могу заставить компилятор это понять.