栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

创建案例类的写作和格式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

创建案例类的写作和格式

好问题!您不能使用的原因

map
是因为
Writes
它不是函子。

您可以将其

Writes[A]
视为类似
A => JsValue
。但是,假设我有一个
A => JsValue
和一个
A =>B
。尝试想出一些方法来构成这些函数以获得一个
B => JsValue
—这是不可能的。

Reads[A]
另一方面,有点像
JsValue => A
,并且是一个函子-它具有一种
map
方法,该方法采用a
A =>B
并将其与
Reads[A]
/ 组成
JsValue => A
并返回
Reads[B]
/
JsValue => B

Writes
但是,它是一个 协变
函子,幸运的是Play知道这一点。当
F
是逆函子时,
F[A]
有一个方法
contramap[B](f:B => A)
代替了通常的方法
map[B](f: A => B)
。所以你可以这样写:

case class People(names: Set[Int])import play.api.libs.json._import play.api.libs.functional.syntax._implicit val PeopleWrites: Writes[People] =  (__  'names).write[Set[Int]].contramap(_.names)

(__  'names).write[Set[Int]]
是一个
Writes[Set[Int]]
并且
(_.names)
是一个函数
People=> Set[Int]
。与他们结合在一起
contramap
给我们一个
Writes[People]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号