方法映射的参数太多:(应用:(字符串,字符串,字符串)=> R)(取消应用:R => 选项[(字符串,字符串,字符串)])play.api.data.Mapping[R]


val computerForm = Form(
    mapping(
        "id" -> ignored(NotAssigned:Pk[Long]),
        "name" -> nonEmptyText,
        "introduced" -> optional(date("yyyy-MM-dd")),
        "discontinued" -> optional(date("yyyy-MM-dd")),
        "company" -> optional(longNumber)
    )(Computer.apply)(Computer.unapply)
)

这段代码给了我太多方法映射参数的错误:

(apply: (String, String, String) => R)(unapply: R => Option[(String, String, String)])play.api.data.Mapping[R]..please solve this issue"

让我们按顺序,从Play2 Scaladoc开始。您正在调用的 Form 方法Form.apply

形成斯卡拉多克

def apply[T](mapping: (String, Mapping[T])): Form[T]

所以你的映射(smth)应该返回一个(String,Mapping[T])。映射方法改为在对象Forms中定义

表单 Scaladoc

Forms.mapping 是一个具有多个可用签名的重载方法,让我们看一个

def
mapping[R, A1, A2, A3, A4](a1: (String, Mapping[A1]), a2: (String, Mapping[A2]), a3: (String, Mapping[A3]), a4: (String, Mapping[A4]))(apply: (A1, A2, A3, A4) ⇒ R)(unapply: (R) ⇒ Option[(A1, A2, A3, A4)]): Mapping[R]

因此,此方法采用(String,Mapping[Aindex])类型(a1,a2,a3,a4)的第一个参数列表,另一个包含单个参数apply: (A1, A2, A3, A4) ⇒ R的参数列表,以及包含单个参数的最后一个参数列表unapply: (R) ⇒ Option[(A1, A2, A3, A4)]

通常,对于所有重载版本的映射,签名强加使得应用/取消应用应该具有对应于第一个参数列表的更新版本的签名。

这里发生的事情是,通过->您正在创建 5(String,Mappings[Asomething])元组,而您的apply/unapply只有 3 个参数

相关内容

  • 没有找到相关文章

最新更新