Filtering a Scala List by type

后端 未结 3 1572
暗喜
暗喜 2020-12-25 11:09

I have a class structure like this

abstract class A
class B extends A
class C extends A
class D extends A
class E extends A

and I have a co

3条回答
  •  青春惊慌失措
    2020-12-25 11:43

    flatMap that shit! (as they say):

    scala> val ys = xs flatMap {
         |   case _: B | _: C => None
         |   case other => Some(other)
         | }
    ys: List[A] = List(D@7ecdc97b, E@2ce07e6b, E@468bb9d1)
    

    In your case you were getting a List[ScalaObject] because ScalaObject is the least upper bound of None, D, and E.

提交回复
热议问题