Play 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>
}
}
case 式の後の括弧内のテキストは出力 (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> }
}
}
動作しますが、少し面倒です。
オブジェクトとメンバーを含む式 (例: album.year
) でこのパターン マッチング機能を使用する適切な方法はありますか?