0

出于好奇,对于那些学习 Scala 的人,请解释一下它的实现到底是什么FunctionalCanBuild

因此,可以为Writesplay 框架中的类创建自定义 Json,如下所示:

implicit val locationWrites: Writes[Location] = (
  (JsPath \ "lat").write[Double] and
  (JsPath \ "long").write[Double]
)(unlift(Location.unapply))

andis 方法定义在FunctionalBuilderOps并返回,然后FunctionalBuilder[M]#CanBuild2返回FunctionalBuilder[M]#CanBuild3,依此类推,直到FunctionalBuilder[M]#CanBuild22

那为什么是22?如果我的模型有 23 个字段怎么办?从Scala的角度来看如何理解这一点:

fu.fmap[A1 ~ A2, B](canBuild(m1, m2), { case a1 ~ a2 => f(a1, a2) })

为什么~(以及在哪里定义)调用泛型?

我知道,这个问题可能看起来有点复杂,但 stackoverflow 是我唯一的希望,没有谷歌搜索没有 scala 文档有助于理解。

4