Según la Play 2.0 documentation, la coincidencia de patrones puede realizarse en una plantilla, así:patrones sobre object.member de Juego 2.0 plantillas
@connected match {
case models.Admin(name) => {
<span class="admin">Connected as admin (@name)</span>
}
case models.User(name) => {
<span>Connected as @name</span>
}
}
El texto entre los paréntesis después de las expresiones caso se trata como de salida (por ejemplo, HTML), y esto es bastante conveniente.
Sin embargo, al intentar utilizar una expresión de coincidencia que no es una variable simple, como object.member, así:
@album.year match {
case Some(y: Int) => { @y }
case None => { <b>nope</b> }
}
da lugar a un error de compilación: "')' expected but 'case' found."
Uso defining
a obligar a la expresión a una variable simple, así:
@defining(album.year) { foo =>
@foo match {
case Some(y: Int) => { @y }
case None => { <b>nope</b> }
}
}
obras, pero parece un poco cumb ersome.
¿Existe alguna manera adecuada de utilizar esta función de coincidencia de patrones en las expresiones que involucran un objeto y un miembro (por ejemplo, album.year
)?
hace @ (partido album.year { Algunos casos (a: Int) => {} @y caso Ninguno => {nop}} ) o @ (album.year) coinciden { caso de que alguno (a: Int) => {@ y} caso Ninguno => {no} } trabajo? – axaluss
No, ninguno de estos funciona. Los primeros resultados en "inicio esperado de la definición", y el segundo da como resultado el mismo error "')' esperado ... '' como el anterior. – kes
does @ {album.year match {case Some (y: Int) => {@y} case None => {nope}}} work? – axaluss