Typ funkcji z parametrami ukrytymi w Scali

Chciałbym mieć funkcję wyższego rzędu, która przyjmuje parametr funkcję, która akceptuje określony niejawny parametr.

Aby być bardziej precyzyjnym, próbuję stworzyć funkcję, która przyjmujeFuture metoda tworzenia, która zależy od kontekstu ukrytego i zwraca metodę, która nie zależy od kontekstu.

Aby być bardziej konkretnym, powiedzmy, że mam coś takiego:

def foo(a: Int)(implicit ctx: ExecutionContext): Future[Float] = future { somelongBar... }

Chciałbym mieć taką metodę:

def provideCtx[A](func: ExecutionContext => A): A = {
     val ctx = setupCtx
     func(ctx)
}

ale jeśli zadzwonięprovideCtx(foo), kompilator skarży się na brak kontekstu wykonania niejawnego.

Fakt, że mam do czynienia z ExecutionContext nie jest bardzo ważny. Chciałbym dowiedzieć się, jak napisać typ parametru, aby zaakceptować funkcję z niejawnym argumentem określonego typu. Rozumiem, że ukryta część jest przeklętym argumentem, więc w rzeczywistości mam taką funkcję:ExecutionContext => Int => Future[Float]i jestem całkiem pewien, że w czasie wykonywania jvm nie wie, że ExecutionContext jest niejawny, ale nie mogę zmusić kompilatora do zrozumienia tego.

questionAnswers(1)

yourAnswerToTheQuestion