毎週の試合結果レポートに延長戦の試合表示フラグを表示するかどうかを決定しようとしています。
データベースゲームの結果テーブルには、延長戦の可能性のあるゲーム期間のスコアの合計(それぞれ、OT、ダブルOT、トリプルOT)を表す3つの列(p4、p5、p6)があります。これらの列は、アプリケーション層のOption[Int]にマップされます。
現在、ゲーム結果のteamA、teamBのペアをフィルタリングしていますが、実際には、OTゲームが何らかの種類で存在するかどうかを知りたいだけです(コレクションをステップスルーするのではありません)。
def overtimeDisplay(a: GameResult, b: GameResult) = {
val isOT = !(List(a,b).filter(_.p4.isDefined).filter(_.p5.isDefined).filter(_.p6.isDefined).isEmpty)
if(isOT) {
<b class="b red">
{List( ((a.p4,a.p5,a.p6),(b.p4,b.p5,b.p6)) ).zipWithIndex.map{
case( ((Some(_),None,None), (Some(_),None,None)), i)=> "OT"
case( ((Some(_),Some(_),None), (Some(_),Some(_),None )), i)=> "Double OT"
case( ((Some(_),Some(_),Some(_)), (Some(_),Some(_),Some(_) )), i)=> "Triple OT"
}}
</b>
}
else scala.xml.NodeSeq.Empty
}
第二に、どのタイプの残業を表示するか、現在その忙しいパターンマッチ(今それを見ると、すべてのスコアリングシナリオをカバーしているようには見えない)の決定は、おそらくより機能的/簡潔な方法で行うことができます。
より良い方法があれば、気軽に置いてください。
ありがとう