/ / Opción de devolución de (Int, Int) en scala de una lista [Int, Int] - scala, scala-collections

Devolución de la opción de (Int, Int) en scala desde una lista [Int, Int] - scala, scala-collections

Tengo una Scala Lista de tuplas, clasificada en orden descendente por el primer elemento de la tupla. Intenté algunas operaciones como las que se muestran a continuación, que me pueden devolver algunos elementos de la lista o 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()

Quiero escribir un método de utilidad que pueda ajustar y devolver el tipo de opción del primer elemento de la Lista, que será una tupla si filterNot no ha vaciado la lista a la lista (). Si filterNot me da Lista (), solo quiero devolver Ninguno. Si filterNot me devuelve un List Con los elementos, quiero hacer la opción (l (0)). Puedo hacerlo con chequeos regulares y todo, pero me preguntaba cómo lo hago de una manera más funcional.

Respuestas

4 para la respuesta № 1

Una mejor alternativa sería usar List.find que toma un predicado y devuelve el primer partido:

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

Nota: Invertí el valor menor que a mayor que porque no estamos negando el predicado.