Java, Play2.0, ')' ожидается, но '=' найдена игра - PullRequest
3 голосов
/ 21 марта 2012

Я следую " Распространенным шаблонам использования " в документе play2.0, когда пытаюсь создать тег.

@(level: String = "error")(body: (String) => Html)

@level match {

  case "success" => {
    <p class="success">
      @body("green")
    </p>
  }

  case "warning" => {
    <p class="warning">
      @body("orange")
    </p>
  }

  case "error" => {
    <p class="error">
      @body("red")
    </p>
  }

}

, затем обновляю страницу http://localhost:9000, получить сообщение об ошибке:

')' expected but '=' found.
In foo/app/views/tags/notice.scala.html at line 4.
1#{extends 'main.html' /}
2#{set title:'notice.scala.html' /}
3
4@(level: String="error")(body: (String) => Html) 
5
6@level match {
7    
8  case "success" => {

, так как я новичок и в play2.0, и в scala, кто-нибудь в облаке скажет мне, почему?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Не имеет смысла иметь аргумент по умолчанию в собственной группе аргументов:

@(level: String = "error")(body: (String) => Html)

Обратите внимание, как пример "moreScripts and moreStyles" в Шаблоны Scala распространены помещает аргумент по умолчанию с другим аргументом:

@(title: String, scripts: Html = Html(""))(content: Html)

Вы можете сделать то же самое:

@(body: (String) => Html, level: String = "error")

Примечание: не очень хорошая идея полагаться на строкиразличать успех / предупреждение / ошибку.Строки хрупкие и подвержены опечаткам, которые скрывают ошибки раздражающими способами.Вместо этого ищите тип данных или создайте свой собственный, чтобы представить это: таким образом, опечатки станут ошибкой компилятора.

class ResultType
case object Success                 extends ResultType
case class Warning(message: String) extends ResultType
case class Error(message: String)   extends ResultType
0 голосов
/ 21 марта 2012

Я думаю, вы должны попробовать

@(level: (String) => "error")(body: (String) => Html)

@level match {

  case "success" => {
    <p class="success">
      @body("green")
    </p>
  }

  case "warning" => {
    <p class="warning">
      @body("orange")
    </p>
  }

  case "error" => {
    <p class="error">
      @body("red")
    </p>
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...