10

ここに書かれていることを実践してください: ScalaForms、私は次のフォームを作成しました:

  val personCreationForm = Form(
    tuple (
        "name" -> nonEmptyText,
        "age" -> number verifying (min(0), max(100))       /*ERROR*/
    ) verifying ("Wrong entry", result => result match {
      case (name, age) => true
    })
  )

ただし、エラーは次のようにverifying述べていvalue verifying is not a member of (java.lang.String, play.api.data.Mapping[Int])ます。

参照されている例のように、mapping代わりに を使用tupleしても違いはありません。ここで何が問題なのですか?

4

1 に答える 1

9

Scala operator precedence rulesによると、文字で始まるメソッドは他のメソッドよりも優先順位が低いため、次のように記述します。

"age" -> number verifying (min(0), max(100))

コンパイラは次の式を作成します。

("age" -> number) verifying (min(0), max(100))

これはあなたが望むものではありません!次のように書き換えることができます。

"age" -> number.verifying(min(0), max(100))
"age" -> (number verifying (min(0), max(100)))

そして、現在の Play のドキュメントは間違っています。捕まえてくれてありがとう!

于 2012-04-24T21:26:53.193 に答える