這是一種美容斯卡拉問題。對象列表需要根據對象的屬性進行過濾。如果對屬性的第一次檢查導致列表爲空,我需要報告。簡化代碼:過濾器和報告多謂詞
case class Account (id: Int, balance: Float)
def doFilter(list: List[Account], focusId: Int, thresHold: Float): List[Account] = {
list.filter(_.id == focusId)
// ## if at this point if the list is empty, an error log is required.
.filter(_.balance >= thresHold)
}
var accounts = List(Account(1, 5.0f), Account(2, -1.0f), Account(3, 10f), Account(4, 12f))
println(s"result ${doFilter(accounts, 1, 0f)}")
我當然可以拆分過濾語句,檢查中間結果,但我希望我能做到這一點更斯卡拉方式..我想是這樣。
list.filter(_.id == focusId)
match { case List() => { println "error"; List()}
case _ => _}
但這並不奏效。是否有功能(或流利)的方式來實現所需的行爲?