Questo è davvero fastidioso quando si scrive un codice altamente concorrente con la risposta Futures o Actors e si importa manualmente ExecutionContext.Implicits.global
. Ho cercato di trovare qualche buona spiegazione del perché non è stato impostato come parametro predefinito, ad esempio done con Strategy
in Scalaz Concurrent
. Sarebbe molto utile, non inserire/rimuovere tutte quelle importazioni nel codice. O mi manca qualche logica?Perché Global ExecutionContext non è un parametro predefinito nel blocco futuro?
6
A
risposta
10
La tendenza generale sembra essere quella di richiedere all'utente di importare esplicitamente cose come impliciti, operatori aggiuntivi o DSL. Penso che sia una buona cosa dal momento che rende le cose meno "magiche" e più comprensibili.
Ma nulla ti impedisce di definire un valore implicito a livello di pacchetto per il tuo codice. Si noti che se l'implicito ExecutionContext è sempre stato importato per impostazione predefinita, non sarebbe possibile farlo.
Nel oggetto del pacchetto:
package object myawsomeconcurrencylibrary {
implicit def defaultExecutionContext = scala.concurrent.ExecutionContext.global
}
In ogni classe nello stesso pacchetto:
package myawsomeconcurrencylibrary
object Bla {
future { ... } // implicit from package object is used unless you explicitly provide your own
}
Problemi correlati
- 1. Devo eseguire l'override di ExecutionContext predefinito?
- 2. Perché questo parametro del modello predefinito non è consentito?
- 3. Ottenere un risultato nel futuro?
- 4. costruttore con un parametro predefinito
- 5. Perché npm non onora l'utente/global npmignore?
- 6. SET GLOBAL max_allowed_packet non funziona
- 7. Perché Array.prototype.reduce non ha un parametro thisObject?
- 8. Perché 'Esporta valore predefinito' non è valido?
- 9. Attesa futuro dall'esecutore: Futuro non può essere utilizzato nell'espressione 'attendi'
- 10. Come funziona .NET ExecutionContext?
- 11. Akka HTTP: il blocco in un futuro blocca il server
- 12. Perché attendere non è consentito in un blocco finale?
- 13. convertiamo il futuro di Scala nel futuro di Twitter
- 14. ExecutionContext of Threads
- 15. RLock è un valore predefinito rispetto al blocco?
- 16. Perché "decimale" non è un tipo di parametro dell'attributo valido?
- 17. È possibile che OCMock esegua un parametro di blocco?
- 18. interessante caso di ombreggiamento parametro C++ (parametro non oscurato in un blocco if)
- 19. Perché PHP non ha un costruttore predefinito?
- 20. Errore del parametro di tipo predefinito nel codice modello
- 21. Perché non è valido assegnare un valore intero a un parametro uint in un argomento del metodo C#?
- 22. Perché questo parametro di tipo è conservato nel bytecode?
- 23. Perché è impossibile specificare il valore predefinito di un parametro varargs Scala?
- 24. Ingresso con display: il blocco non è un blocco, perché no?
- 25. Parametro NULL predefinito Rcpp
- 26. Gioca Framework 2.1 - Non riesco a trovare un ExecutionContext implicita
- 27. global global app.config
- 28. Metodo valore predefinito parametro array
- 29. C'è un modo per impostare un parametro predefinito uguale ad un altro valore di parametro?
- 30. Cosa succede se il valore del parametro predefinito è definito nel codice non visibile nel sito di chiamata?