sealed class A
class B1 extends A
class B2 extends A
Предполагая, что у нас есть список объектов класса A
: val l: Список [A] = Список (новый B1, новый B2, новый B1, новый B1)
И мы хотим отфильтровать элементы типа B1. Тогда нам нужен предикат и он может использовать следующие две альтернативы:
l.filter(_.isInstanceOf[B1])
или
l.filter(_ match {case b: B1 => true; case _ => false})
Лично мне больше нравится первый подход, но я часто читаю, нужно использовать инструкцию match-case
чаще (по причинам, которые я не знаю).
Поэтому возникает вопрос: существуют ли недостатки использования isInstanceOf
вместо инструкции match-case
? Когда следует использовать какой подход (и какой подход следует использовать здесь и почему)?