【发布时间】:2020-06-22 09:45:55
【问题描述】:
我在学习 Cats 库时发现 * 是一个泛型类型,就像这样:
implicit def catsDataSemigroupKForValidated[A](implicit A: Semigroup[A]): SemigroupK[Validated[A, *]] =
new SemigroupK[Validated[A, *]] {
def combineK[B](x: Validated[A, B], y: Validated[A, B]): Validated[A, B] = x match {
case v @ Valid(_) => v
case Invalid(ix) =>
y match {
case Invalid(iy) => Invalid(A.combine(ix, iy))
case v @ Valid(_) => v
}
}
}
我的猜测是使用*,因为combineK方法返回Validated[A, B]所以不需要指定泛型类型。或者它可能是Any 类型(如建议使用 Inteliij)。我会很高兴得到您的解释。
【问题讨论】:
标签: scala generics scala-cats