Typ einer Funktion mit impliziten Parametern in Scala

Ich hätte gerne eine Funktion höherer Ordnung, die einen Parameter in eine Funktion aufnimmt, die einen bestimmten impliziten Parameter akzeptiert.

Genauer gesagt versuche ich, eine Funktion zu erstellen, die a benötigtFuture Erstellungsmethode, die von einem impliziten Kontext abhängt und eine Methode zurückgibt, die nicht vom Kontext abhängt.

Um konkreter zu sein, lassen Sie uns sagen, dass ich so etwas habe:

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

Ich hätte gerne eine Methode wie diese:

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

aber wenn ich anrufeprovideCtx(foo)beschwert sich der Compiler über den fehlenden impliziten Ausführungskontext.

Die Tatsache, dass es sich um einen ExecutionContext handelt, ist nicht sehr wichtig. Was ich finden möchte, ist, wie man den Parametertyp schreibt, um eine Funktion mit einem impliziten Argument eines bestimmten Typs zu akzeptieren. Ich verstehe, dass der implizite Teil ein Curry-Argument ist, so dass ich in der Tat eine Funktion wie folgt habe:ExecutionContext => Int => Future[Float], und ich bin mir ziemlich sicher, dass der JVM zur Laufzeit nicht weiß, dass dieser ExecutionContext implizit ist, aber ich kann dem Compiler das nicht verständlich machen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage