按照Play 2.0 documentation上object.member匹配,模式匹配可以在像這樣的模板來完成:模式中播放2.0模板
@connected match {
case models.Admin(name) => {
<span class="admin">Connected as admin (@name)</span>
}
case models.User(name) => {
<span>Connected as @name</span>
}
}
的情況下的表達式後的括號內的文本將被視爲輸出(例如HTML),這非常方便。
然而,試圖使用一個匹配表達式不是一個簡單的變量,如object.member,這樣當:
@album.year match {
case Some(y: Int) => { @y }
case None => { <b>nope</b> }
}
它導致一個編譯錯誤: "')' expected but 'case' found."
使用defining
表達式綁定到一個簡單的變量,就像這樣:
@defining(album.year) { foo =>
@foo match {
case Some(y: Int) => { @y }
case None => { <b>nope</b> }
}
}
的作品,但它似乎有點cumb ersome。
在涉及對象和成員的表達式(例如album.year
)上是否有適當的方式使用此模式匹配功能?
確實 @(album.year匹配{ 的情況下的一些(Y:強度)=> {@y} 情況下無=> {都能跟得上} }) 或 @(album.year)匹配{ 一些情況下(Y:強度)=> {@ y} case None => {nope} } 工作嗎? – axaluss
不,這些都不起作用。第一個結果是「預計開始定義」,第二個結果與上述相同「」)「期望...」錯誤。 – kes
@@ album.year match {case Some(y:Int)=> {@y} case None => {noope}}}工作嗎? – axaluss