2016-06-15 5 views
0

フィルタが結果(または特定の量)を返すことを検証するためのScalaの慣用的なアプローチは何ですか?例えばScalaフィルタは結果のうち1つ(または特定の数)を返す

val myFilteredListWithDesiredOneItem = unfilteredList 
    .filter(x => x.getId.equals(something)) 
    .VERIFY AMOUNT 
    .toList 
+1

あなたは '.collectFirst'を見ましたか? – cchantep

+0

@cchantepはい、引数として渡される部分的な関数があります。それに代わるものがあれば私は興味がありました。 – Stas

+0

試しましたか?何か問題はありますか? – cchantep

答えて

1

はoneliner

val myFilteredListWithDesiredOneItem = { 
    val xs = unfilteredList.filter(x => x.getId.equals(something)) 
    if (xs.size == n) xs.toList 
    else List.empty[T] 
} 

、タイプTのリストについては、これを考慮していない、コードがシンプルどれもあまり残っていません。

-3

おそらくこのような何か:

Option(list.filter(filterFunc)) 
    .filter(_.size == n) 
    .getOrElse(throw new Exception("wrong size!")) 
0

は、おそらく、警備員との一致を試してみてください?

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 
} 
関連する問題