Tôi có một cấu trúc lớp như thế nàyLọc một danh sách Scala theo loại
và tôi có một bộ sưu tập của các trường hợp khác nhau, ví dụ:
val xs = List(new D, new B, new E, new E, new C, new B)
Câu hỏi của tôi là, liệu có một cách thanh lịch để lọc ra một số lớp con khỏi Danh sách?
Giả sử tôi muốn tất cả các trường hợp ngoại trừ B và C. Tôi có thể làm điều đó với một loạt các isInstanceOf, hoặc bằng cách sử dụng thu thập như thế này:
val ys = (xs collect {
case b: B => None
case c: C => None
case notBorC => notBorC
}).filter(_ != None).asInstanceOf[List[A]]
này hoạt động nhưng nó cảm thấy lúng túng, chủ yếu là vì các bộ lọc và đúc. Có cách nào thanh lịch hơn không? Ít mã được ưu tiên và tôi muốn có giải pháp không cần phải cập nhật nếu tôi thêm các lớp con khác của A.
Vâng, đây là giải pháp tốt hơn nhiều so với lần thử đầu tiên của tôi. – hezamu