Согласно документации Play 2.0сопоставление с образцом может выполняться в шаблоне следующим образом:
@connected match {
case models.Admin(name) => {
Connected as admin (@name)
}
case models.User(name) => {
Connected as @name
}
}
Текст в квадратных скобках после case-выражений воспринимается как вывод (например, HTML), и это довольно удобно.
Однако при попытке использовать выражение соответствия, которое не является простой переменной, такой как object.member, например:
@album.year match {
case Some(y: Int) => { @y }
case None => { nope }
}
это приводит к ошибке компиляции:
"')' ожидалось, но найдено "дело".
Использование определения
для привязки выражения к простой переменной, например:
@defining(album.year) { foo =>
@foo match {
case Some(y: Int) => { @y }
case None => { nope }
}
}
работает, но кажется немного громоздким.
Есть ли правильный способ использовать эту функцию сопоставления с образцом для выражений, которые включают объект и элемент (например, album.year
)?