【问题标题】:Understanding unlift and unapply in Scala play framework理解 Scala play 框架中的 unlift 和 unapply
【发布时间】:2019-11-07 07:24:40
【问题描述】:

在"Play for Scala book" 清单 8.12 中

import play.api.libs.json._
import play.api.libs.functional.syntax._
implicit val productWrites: Writes[Product] = (
  (JsPath \ "ean").write[Long] and
  (JsPath \ "name").write[String] and
  (JsPath \ "description").write[String]
)(unlift(Product.unapply))

他们对 unlift 和 unapply 的解释如下:

最后,清单 8.12 中的格式化程序使用 and 运算符 合并格式化程序,并 unlift 以更改 unapply 函数的 将类型返回到此处所需的内容。 API 的详细信息 结合这样的格式化程序以及需要取消提升的原因 更复杂,但您现在可以放心地忽略它。

那么这个 unlift 有什么作用以及它是如何工作的?

我试过这个link,但两者都不是同一个 unlift

【问题讨论】:

    标签: scala play-json


    【解决方案1】:

    现在播放 JSON unlift“只是”call Scala Function.unlift,其中 itself“转换”a T => Option[R] 为播放 JSON 所需的相应部分函数。

    作为 unapply 的 case 类应该有类似 (PropA, PropB, PropC) => Option[MyCaseClass] 的签名,将其传递给 unlift 创建相应的偏函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      相关资源
      最近更新 更多