Как правило, как найти первый элемент, удовлетворяющий определенному условию в Seq
?
Например, у меня есть список возможных форматов даты, и я хочу найти проанализированный результат первого формата, который может проанализировать мою строку даты.
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
Неплохо. Но это немного уродливо. 2. он сделал некоторую ненужную работу (попробовал форматы "MM yyyy"
и "MM, yyyy"
). Возможно, есть более элегантный и идиоматический путь? (используя Iterator
?)