首页 > 解决方案 > 在猫中使用 [T : Type] 的目的是什么?

问题描述

我正在学习使用 Scala 猫库。我经常看到这种类型的定义

implicit def validatedApplicative[E : Semigroup]: Applicative[Validated[E, ?]] = ???
def parallelValidate[E : Semigroup, A, B, C](v1: Validated[E, A], v2: Validated[E, B])(f: (A, B) => C): Validated[E, C] = ???
def parse[A : Read](key: String): Validated[ConfigError, A] = ???

标签: scalascala-cats

解决方案


Cats 到处都使用类型类,当你想了解更多函数式方法时,你应该研究一下。

类型类可以定义如下:

trait Read[A] {
  def read(in: A): String
}

当指定这样的类型时:[A : Read]

您要求使用的类型 A 必须在范围内具有 typeClass Read 的实现。

与要求您的类型扩展许多不同的接口相比,这使得编写通用代码变得非常简单......

我相信在猫网站上有一些介绍类型类的博客


推荐阅读