Mi piacerebbe avere una funzione di ordine superiore che accetta un parametro che accetta uno specifico parametro implicito.Tipo di funzione con parametri impliciti in Scala
Per essere più precisi, sto cercando di creare una funzione che utilizza un metodo di creazione Future
che dipende da un contesto implicito e restituisce un metodo che non dipende dal contesto.
essere più concreti, diciamo che ho qualcosa di simile:
def foo(a: Int)(implicit ctx: ExecutionContext): Future[Float] = future { somelongBar... }
Vorrei fare avere un metodo come questo:
def provideCtx[A](func: ExecutionContext => A): A = {
val ctx = setupCtx
func(ctx)
}
ma se chiamo provideCtx(foo)
, il il compilatore si lamenta del contesto di esecuzione implicito mancante.
Il fatto che si tratti di un ExecutionContext non è molto importante. Quello che vorrei trovare è come scrivere il tipo di parametro per accettare una funzione con un argomento implicito di un tipo specifico. Capisco che la parte implicita è un argomento curry, quindi in realtà ho una funzione come questa: ExecutionContext => Int => Future[Float]
, e sono abbastanza sicuro che in fase di esecuzione, jvm non sa che l'ExecutionContext è implicito, ma non posso fai capire al compilatore.
infatti, ho finito per scrivere qualcosa di molto simile in questo momento, è solo un po 'macchinoso. – Mortimer