【发布时间】:2021-01-31 14:28:31
【问题描述】:
我相信我对此的理解是正确的,但我想检查一下。创建类型类时,让它们采用单个类型参数感觉更简洁,例如TypeClass[A]。如果 typeclass 需要通过其他方式参数化,可以使用抽象类型,这里有两种方式的对比:
Abstract types versus type parameters
据我所知,链接中没有提到的一件事是,如果使用类型参数,您可以看到该参数实现了一个(不同的)类型类,如下所示:
trait IsValidForTC[A]
abstract class TCWithTypeParam[A, B] (implicit ev: IsValidForTC[B]) {}
如果我使用抽象类型,我无法确定它是否实现了IsValidForTC:
abstract class TCWithAbstractType[A] (implicit ev: IsValidForTC[B]) {
type B
} //not found: Type B
如果是这样,那么这是有道理的,但是上面的链接中没有提到这种差异,所以我想检查一下。
谢谢!
【问题讨论】:
标签: scala generics typeclass implicit