/ / Listからの(Int、Int)のオプションの返す[Int、Int] - scala、scala-collections

Listからの(Int、Int)のオプションの返す[Int、Int] - scala、scala-collections

私はタプルの最初の要素によって降順にソートされたスカラリストを持っています。 私は以下のようないくつかの操作を試してみました。リストからいくつかの要素を返すことができます。 List()

scala> val l = List((95,6),(10,2),(8,5))
l: List[(Int, Int)] = List((95,6), (10,2), (8,5))

scala> l.filterNot({case (x,y)=>x/5<2})
res6: List[(Int, Int)] = List((95,6), (10,2))

scala> l.filterNot({case (x,y)=>x/5<200})
res7: List[(Int, Int)] = List()

私はラップして返すことができるユーティリティメソッドを書いて、リストの最初の要素のOption型をタプルにする filterNot リストをList()に空にしていない。もし filterNot 私にList()を与え、ただ返したい。もし filterNot 私に List 私はOption(l(0))をしたい。私は小切手の場合は定期的にそれを行うことができますが、私はそれをもっと機能的なやり方でどうやってやっているのだろうと思っていましたか?

回答:

回答№1は4

より良い選択肢は、 List.find これは述語をとり、最初の一致を返します:

scala> l find { case (x, y) => x / 5 >= 2 }
res5: Option[(Int, Int)] = Some((95,6))

scala> l find { case (x, y) => x / 5 >= 200 }
res6: Option[(Int, Int)] = None

私は述語を否定していないので、それよりも小さいものを逆にしました。