Sto cercando di concatenare alcune funzioni di base utilizzando Future
s restituite da un'azione slick e sto colpendo alcuni ostacoli piuttosto banali.Perché Future.onSuccess richiede una funzione parziale
Entrambi i metodi andThen
e onSuccess
richiedono un valore pari a PartialFunction
passato come parametro. La mia comprensione è probabilmente abbastanza imperfetta, ma dopo aver letto circa anonymous functions sembra che lo andThen
abbia bisogno di conoscere la funzione anonima per soddisfare qualsiasi input Success
o Failure
.
Dato onSuccess
già solo si rivolge per il caso Success
perché deve ancora essere un PartialFunction
?
Questo blocco di codice i miei indicare il problema che sto avendo:
val db = Database.forConfig("h2mem1")
try {
val f = db.run(setupCommands)
.onSuccess { println(_) }
Await.ready(f, 10.seconds)
}
finally db.close
ottengo un errore di compilazione:
[error] found : Unit => Unit
[error] required: PartialFunction[Unit,?]
[error] .onSuccess { println(_) }
@cmbaxter Ecco 'onComplete', non' onSuccess'. La mia ipotesi: coerenza con 'onFailure'. –
2.11.6 - Questi [documenti] (http://www.scala-lang.org/files/archive/nightly/docs/library/index.html#scala.concurrent.Future) suggeriscono PartialFunction? – GoldenFish
Penso che la domanda migliore sia perché "onComplete" non ha anche una funzione parziale? Penso che gli altri 3 siano stati messi in atto con effetti collaterali con le condizioni in mente e i PF sono buoni per la parte delle condizioni (corrispondenza del modello). Non sono sicuro del motivo per cui "onComplete" (sembra essere anche per effetto collaterale dato "Unità" come tipo di ritorno) non ha seguito l'esempio. – cmbaxter