Scala Play框架FunctionalCanBuild详解
Scala Play framework FunctionalCanBuild explain
出于好奇,请学过Scala的同学解释一下FunctionalCanBuild
的实现是什么鬼:
因此,可以在 play 框架中为 class 创建自定义 Json Writes
,如下所示:
implicit val locationWrites: Writes[Location] = (
(JsPath \ "lat").write[Double] and
(JsPath \ "long").write[Double]
)(unlift(Location.unapply))
and
是在 FunctionalBuilderOps
和 returns FunctionalBuilder[M]#CanBuild2
中定义的方法 returns FunctionalBuilder[M]#CanBuild3
等等,直到 FunctionalBuilder[M]#CanBuild22
.
为什么是 22?如果我的模型有 23 个字段怎么办?
从 Scala 的角度如何理解这一点:
fu.fmap[A1 ~ A2, B](canBuild(m1, m2), { case a1 ~ a2 => f(a1, a2) })
为什么 ~
(以及定义的地方)调用泛型?
我知道,这个问题可能看起来有点复杂,但 Whosebug 是我唯一的希望,没有谷歌搜索没有 scala 文档有助于理解。
A ~ B
就像一对 (A, B)
.
22 是 Scala 中的幻数:
Why are scala functions limited to 22 parameters?
出于好奇,请学过Scala的同学解释一下FunctionalCanBuild
的实现是什么鬼:
因此,可以在 play 框架中为 class 创建自定义 Json Writes
,如下所示:
implicit val locationWrites: Writes[Location] = (
(JsPath \ "lat").write[Double] and
(JsPath \ "long").write[Double]
)(unlift(Location.unapply))
and
是在 FunctionalBuilderOps
和 returns FunctionalBuilder[M]#CanBuild2
中定义的方法 returns FunctionalBuilder[M]#CanBuild3
等等,直到 FunctionalBuilder[M]#CanBuild22
.
为什么是 22?如果我的模型有 23 个字段怎么办? 从 Scala 的角度如何理解这一点:
fu.fmap[A1 ~ A2, B](canBuild(m1, m2), { case a1 ~ a2 => f(a1, a2) })
为什么 ~
(以及定义的地方)调用泛型?
我知道,这个问题可能看起来有点复杂,但 Whosebug 是我唯一的希望,没有谷歌搜索没有 scala 文档有助于理解。
A ~ B
就像一对 (A, B)
.
22 是 Scala 中的幻数:
Why are scala functions limited to 22 parameters?