3 回答

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
重讀那里的第一條評(píng)論:
類型類和接口之間的關(guān)鍵區(qū)別在于,要使類A成為接口的“成員”,它必須在其自己的定義位置進(jìn)行聲明。相反,只要您可以提供所需的定義,就可以隨時(shí)將任何類型添加到類型類中,因此在任何給定時(shí)間的類型類的成員都取決于當(dāng)前作用域。因此,我們不在乎A的創(chuàng)建者是否期望我們希望它屬于的類型類;如果不是,我們可以簡(jiǎn)單地創(chuàng)建我們自己的定義以表明它確實(shí)屬于自己,然后相應(yīng)地使用它。因此,這不僅提供了比適配器更好的解決方案,從某種意義上說,它消除了適配器要解決的整個(gè)問題。
我認(rèn)為這是類型類最重要的優(yōu)點(diǎn)。
此外,它們可以正確處理操作沒有我們正在分派的類型的參數(shù)或具有多個(gè)參數(shù)的情況。例如考慮這種類型的類:
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)
...
}
添加回答
舉報(bào)