Не работает match case в шаблоне scala, в play2

Мой код в шаблоне scala:

@session.get("user.id") match {
    case Some(_) => "xx"
    case _ => "yy"
}
Logout

Но дело ... отображаться непосредственно на сгенерированной html-странице:

match { case Some(_) => "xx" case _ => "yy" }  Logout

И в сгенерированном .template.scala это:

"""

"""),_display_(Seq(/*11.4*/session/*11.11*/.get("user.id"))),format.raw/*11.26*/(""" match """),format.raw("""{"""),format.raw/*11.34*/("""
    case Some(_) => "xx"
    case _ => "yy"
"""),format.raw("""}"""),format.raw/*14.4*/("""
Logout
"""

Но я вижу в документе, что он должен поддерживать match case: https ://github.com/playframework/Play20/wiki/ScalaTemplates

@connected match {

  case models.Admin(name) => {
    Connected as admin (@name)
  }

  case models.User(name) => {
    Connected as @name
  }

}

UPDATE1

Наконец, я нашел способ работать:

@defining(session.get("user.id")) { x =>
    @x match {
        case Some(_) => { "xx" }
        case None => {"yy"}
    }
}

Но это выглядит так сложно.

UPDATE2

Найдите другое простое решение:

@{session.get("user.id") match {
    case Some(_) => "xx"
    case _ => "yy"
}}

Но оно не работает в сложном случае:

@{session.get("user.id") match {
    case Some(_) => {Logout}
    case _ => "yy"
}}

@routes.Users.logoutне будет преобразовано.

UPDATE3

Это решение getOrElse:

@session.get("user.id").map { _ =>
    Logout
}.getOrElse {
    Not logged
}

Оно работает, но не использует регистр соответствия

31
задан Freewind 17 March 2012 в 10:05
поделиться