Подтвердить что ты не робот

Форма воспроизведения 2.0 - метод "проверка" поля не является членом

Практикуя то, что написано здесь: 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, как в ссылочном примере, не имеет значения. Что здесь не так?

4b9b3361

Ответ 1

В соответствии с Scala правилами приоритетов операторов методы, начинающиеся с буквы, имеют более низкий приоритет, чем другие, поэтому при написании:

"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 неверна. Спасибо, что поймали его!