Nói chung, cách tìm phần tử đầu tiên thỏa mãn điều kiện nhất định trong một Seq
?Tìm phần tử đầu tiên thỏa mãn điều kiện X trong Seq
Ví dụ: tôi có danh sách định dạng ngày có thể và tôi muốn tìm kết quả được phân tích cú pháp của một định dạng đầu tiên có thể phân tích cú pháp chuỗi ngày của tôi.
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
Không tệ. Nhưng 1. đó là một chút xấu xí. 2. nó đã làm một số công việc không cần thiết (đã thử các định dạng "MM yyyy"
và "MM, yyyy"
). Có lẽ có cách thanh lịch và thành ngữ hơn? (sử dụng Iterator
?)
Sử dụng 'phương pháp find' của 'Seq' – Kakaji