Ich möchte eine Funktion höherer Ordnung haben, die Parameter in eine Funktion aufnimmt, die einen bestimmten impliziten Parameter akzeptiert.Typ einer Funktion mit impliziten Parametern in Scala
Um genauer zu sein, ich versuche, eine Funktion, die eine Future
Erstellungsmethode, die von einem impliziten Kontext abhängt und eine Methode, die nicht abhängig von dem Kontext.
Um konkreter zu sein, lassen Sie uns sagen, dass ich so etwas wie dieses:
def foo(a: Int)(implicit ctx: ExecutionContext): Future[Float] = future { somelongBar... }
Ich möchte eine Methode, wie dies zu tun:
def provideCtx[A](func: ExecutionContext => A): A = {
val ctx = setupCtx
func(ctx)
}
aber wenn ich provideCtx(foo)
nennen, die Compiler beschwert sich über den impliziten Ausführungskontext fehlt.
Die Tatsache, dass es sich um einen ExecutionContext handelt, ist nicht sehr wichtig. Ich möchte herausfinden, wie man den Parametertyp schreibt, um eine Funktion mit einem impliziten Argument eines bestimmten Typs zu akzeptieren. Ich verstehe, dass der implizite Teil ein curryed Argument ist, so dass ich tatsächlich eine Funktion wie folgt habe: ExecutionContext => Int => Future[Float]
, und ich bin ziemlich sicher, dass der jvm zur Laufzeit nicht weiß, dass ExecutionContext implizit ist, aber ich kann nicht Machen Sie das dem Compiler verständlich.
In der Tat habe ich etwas sehr ähnliches geschrieben, es ist nur ein bisschen umständlich. – Mortimer