從這篇博客文章中我了解到 ,Scala中的“類型類”只是使用特征和隱式適配器實現的“模式”。如博客中所述,如果我具有trait A和適配器,B -> A則可以調用一個函數,該函數需要type A的參數和type類型的參數,B而無需顯式調用此適配器。我發現它不錯,但不是特別有用。您能否給出一個用例/示例,以說明此功能的用途?
3 回答

白衣非少年
TA貢獻1155條經驗 獲得超0個贊
重讀那里的第一條評論:
類型類和接口之間的關鍵區別在于,要使類A成為接口的“成員”,它必須在其自己的定義位置進行聲明。相反,只要您可以提供所需的定義,就可以隨時將任何類型添加到類型類中,因此在任何給定時間的類型類的成員都取決于當前作用域。因此,我們不在乎A的創建者是否期望我們希望它屬于的類型類;如果不是,我們可以簡單地創建我們自己的定義以表明它確實屬于自己,然后相應地使用它。因此,這不僅提供了比適配器更好的解決方案,從某種意義上說,它消除了適配器要解決的整個問題。
我認為這是類型類最重要的優點。
此外,它們可以正確處理操作沒有我們正在分派的類型的參數或具有多個參數的情況。例如考慮這種類型的類:
case class Default[T](val default: T)
object Default {
implicit def IntDefault: Default[Int] = Default(0)
implicit def OptionDefault[T]: Default[Option[T]] = Default(None)
...
}
添加回答
舉報
0/150
提交
取消