Ogólnie, jak znaleźć pierwszy element spełniający określony warunek w Seq
?Znajdź pierwszy element, który spełnia warunek X w Seq
Na przykład mam listę możliwego formatu daty i chcę znaleźć analizowany wynik pierwszego formatu, który może przeanalizować mój ciąg dat.
val str = "1903 January"
val formats = List("MMM yyyy", "yyyy MMM", "MM yyyy", "MM, yyyy")
.map(new SimpleDateFormat(_))
formats.flatMap(f => {try {
Some(f.parse(str))
}catch {
case e: Throwable => None
}}).head
Nieźle. Ale 1. To trochę brzydkie. 2. wykonał niepotrzebną pracę (wypróbował formaty "MM yyyy"
i "MM, yyyy"
). Być może jest bardziej elegancki i idiomatyczny sposób? (używając Iterator
?)
użyć 'find' metody' Seq' – Kakaji