import scala.concurrent.ExecutionContext.Implicits.global
class A () {
implicit val ec: ExecutionContextExecutor = ExecutionContext.global
}
大家好,這兩種使用scala全域執行背景關系的方式有什么區別。
uj5u.com熱心網友回復:
其實是不一樣的,這取決于隱式的范圍。如果您的隱式是全域的,則第一個選項有效,但如果范圍在類內,則第二個選項是可行的方法。我建議您將它們匯入到您非常確定將使用它們的地方,以避免將來出現沖突問題。
如果您查看類ExecutionContext的檔案,它會說以下內容:
雖然可以簡單地匯入 scala.concurrent.ExecutionContext.Implicits.global 以獲得隱式 ExecutionContext,但應用程式開發人員應該仔細考慮他們想要在哪里設定執行策略;理想情況下,每個應用程式或每個邏輯相關的代碼部分的一個地方將決定使用哪個 ExecutionContext。也就是說,您主要希望避免硬編碼,尤其是通過匯入 scala.concurrent.ExecutionContext.Implicits.global。推薦的方法是將(隱式 ec: ExecutionContext)添加到需要 ExecutionContext 的方法或類建構式引數中。
uj5u.com熱心網友回復:
沒有差異在給定的范圍之間
import scala.concurrent.ExecutionContext.Implicits.global
和
implicit val ec: ExecutionContext = ExecutionContext.global
然而,頂級import和implicit val內部之間存在差異class/ object:如果在一個檔案中定義多個類/物件,則 theimport將適用于所有這些implicit val類/物件,而 the將僅適用于包含的類/物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403450.html
標籤:
