在猫中使用[T:Type]的目的是什么? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在学习使用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] = ???
  • 有人能告诉我为什么我们定义AClassName的泛型中是[A : ClassName]类型吗?
  • 当我们将方法定义编写为时,我们获得了什么额外的好处 def parse[A : Read](key: String): Validated[ConfigError, A] 代替 def parse(key: String): Validated[ConfigError, Read] 方法声明?
scala scala-cats
1个回答
0
投票

Cats在任何地方都使用类型类,当您想要了解更多功能方法时,您应该考虑它。

类型类可以定义为:

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

指定这样的类型时:[A:读取]

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.