繁体   English   中英

为什么我得到“应用程序不带参数”,我该如何解决这个问题?

[英]Why am I getting “Application does not take parameters” and how do I fix this?

@TravisBrown 昨天用一个返回Writes [T]的隐式函数帮助了我 ,我工作正常,但是今天我尝试将它改编为另一个例子并在最后一行得到错误(“应用程序不带参数”) 。 我究竟做错了什么?

请忽略toString方法,它们只是用于调试。

import play.api.libs.json._
import play.api.libs.functional.syntax._

sealed trait PressureUnit
case object HectoPascalsUnit extends PressureUnit  { override def toString(): String = "(HectoPascalsUnit)" }
case object InchesMercuryUnit extends PressureUnit { override def toString(): String = "(InchesMercuryUnit)" }

case class Pressure(value: Float, unit: PressureUnit)

class SeaLevelPressure(override val value: Float, override val unit: PressureUnit) extends Pressure(value, unit) {
  override def toString(): String = "(SeaLevelPressure value:"+value+" unit:"+unit+")"
}
class StationPressure(override val value: Float, override val unit: PressureUnit) extends Pressure(value, unit) {
  override def toString(): String = "(StationPressure value:"+value+" unit:"+unit+")"
}

object Pressure {
  implicit val pressureWrites: Writes[Pressure] = (
    (__ \ 'value).write[Int] and
      (__ \ 'unit).write[String].contramap[PressureUnit] {
        case HectoPascalsUnit => "hPa"
        case InchesMercuryUnit => "INS"
      }
    )(unlift(Pressure.unapply))  // Error: Application does not take parameters
}

我想到了。 我需要改变这个:

(__ \ 'value.write[Int] and

对此:

(__ \ 'value.write[Float] and

抱歉打扰你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM