Randomize Randomize - 2 months ago 5
Scala Question

Scala: How to avoid check instance and casting

I found myself sometimes in the condition of running:

someCollection.filter(_.isInstanceOf[Foo]).asInstanceOf[List[Foo]]


just to check if the collection has the instances of
Foo
and casting the final filtered collection.

Is there a better way to do that (assuming I cannot change the current data structure)?

I tried with:

someCollection.map(case c: Foo => c)


but at runtime it returns
MatchingError
as of course it is looking for all the remaining cases (
case _ =>
).

Answer
someCollection.collect { case c: Foo => c }