フィルタが結果(または特定の量)を返すことを検証するためのScalaの慣用的なアプローチは何ですか?例えばScalaフィルタは結果のうち1つ(または特定の数)を返す
:
val myFilteredListWithDesiredOneItem = unfilteredList
.filter(x => x.getId.equals(something))
.VERIFY AMOUNT
.toList
フィルタが結果(または特定の量)を返すことを検証するためのScalaの慣用的なアプローチは何ですか?例えばScalaフィルタは結果のうち1つ(または特定の数)を返す
:
val myFilteredListWithDesiredOneItem = unfilteredList
.filter(x => x.getId.equals(something))
.VERIFY AMOUNT
.toList
はoneliner
val myFilteredListWithDesiredOneItem = {
val xs = unfilteredList.filter(x => x.getId.equals(something))
if (xs.size == n) xs.toList
else List.empty[T]
}
、タイプT
のリストについては、これを考慮していない、コードがシンプルどれもあまり残っていません。
おそらくこのような何か:
Option(list.filter(filterFunc))
.filter(_.size == n)
.getOrElse(throw new Exception("wrong size!"))
は、おそらく、警備員との一致を試してみてください?
list.filter(...) match {
case Nil => // empty
case a if (a.size == 5) => // five items
case [email protected](List(item1, item2) => // two (explicit) items
case _ => // default
}
あなたは '.collectFirst'を見ましたか? – cchantep
@cchantepはい、引数として渡される部分的な関数があります。それに代わるものがあれば私は興味がありました。 – Stas
試しましたか?何か問題はありますか? – cchantep