美文网首页
Scala类型类的小应用之Cats

Scala类型类的小应用之Cats

作者: 吐思圈 | 来源:发表于2018-01-15 22:13 被阅读0次

by 壮衣

在上一篇博文《Scala类型类的小应用之Functor Foldable》中留了一个尾巴:介绍Functor和Foldable类型类之后引入了Cats,这篇博文将介绍下如何使用Cats中的Functor和Foldable来完成功能。
先引入Cats的依赖:

libraryDependencies ++= Seq(
  "org.typelevel" %% "cats-core" % "1.0.1"
)

在需要使用Functor和Foldable的地方引入Cats的Functor和Foldable:

import cats.{Functor, Foldable}

然后就可以去掉自己定义的Functor和Foldable类型,其它的可以不用变动。现在可以开始测试代码了:

scala> Encoder[Vector[Int]](Vector(1, 2, 3))
<console>:16: error: could not find implicit value for evidence parameter of type org.forcestudy.csvz.Encoder[Vector[Int]]
       Encoder[Vector[Int]](Vector(1, 2, 3))

显然没有引入对应类型类的实例,幸运的是Cats已经实现了常见类型的类型类实例,所以我们可以拿来主义直接引用:

scala> import cats.implicits._              
import cats.implicits._

scala> Encoder[Vector[Int]](Vector(1, 2, 3))
res2: String = 1,2,3

scala> Encoder[List[List[Int]]](List(List(1, 2, 3), List(4, 5, 6)))
res3: String =
1,2,3
4,5,6

scala> Encoder[List[Person]](List(Person("zdx", 29, 145.0), Person("ygy", 28, 185.0)))
res4: String =
zdx,29,145.0
ygy,28,185.0

可以看到,使用Cats可以明显减少我们的代码,我们不必去构建各种typeclass和对应的实例,直接使用就可以了。当然Cats中的typeclass不只有Functor和Foldable,除了丰富的typeclass,Cats还提供了丰富的datatypes,这些在后面都会介绍到。

相关文章

  • Scala类型类的小应用之Cats

    by 壮衣 在上一篇博文《Scala类型类的小应用之Functor Foldable》中留了一个尾巴:介绍Func...

  • Scala类型类的小应用之CSV Decoder

    by 壮衣 在上一篇博客《Scala类型类的小应用之CSV Encoder》中提供了一个类型类Encoder用于将...

  • Scala类型类的小应用之Functor Foldable

    by 壮衣 在之前的博文《Scala类型类的小应用之CSV Encoder》中有一段代码: 这两个方法分别提供了类...

  • Scala类型类的小应用之CSV Encoder

    by 壮衣 在上一篇博客《Scala由类的动态扩展想到类型类》中提到了类型类,写了一个类型类:Hello[A]并实...

  • [译]Scala统一的类型

    在Scala中,所有值都有类型,包括数值和函数。下图说明了类的层次结构。 Scala类型的层次结构 Any是所有类...

  • Scala泛型

    泛型类是以类型作为参数,Scala类型参数放在方括号[]中,Java放在<>中 变型 Variance Scala...

  • scala数据类型

    scala数据类型体系图如下 从上图可以得到以下结论: 在 scala 中有一个根类型 Any ,他是所有类的父类...

  • Essential Scala: Literals

    Scala对象系统 总体上,Scala对象系统可分为两类: 引用类型 值类型 引用类型 AnyRef的子类 使用n...

  • Scala学习第四节:Scala 基础数据类型

    数据类型 可以看出 scala 与java 中的类型基本上是一一对应的,不同的是 scala 中的字符类型首字母都...

  • Scala 基本数据类型和操作

    数据类型 Scala 的数据类型和Java是类似的,所有Java的基本类型在scala包中都有对应的类,将Scal...

网友评论

      本文标题:Scala类型类的小应用之Cats

      本文链接:https://www.haomeiwen.com/subject/tmtjoxtx.html