Когда использовать isInstanceOf и когда использовать оператор match-case-statement (в Scala)?

sealed class A
class B1 extends A    
class B2 extends A

Предполагая, что у нас есть Список объектов класса A: val l: List[A] = List(новый B1, новый B2, новый B1, новый B1)

И мы хотим отфильтровать элементы типа B1. Тогда нам нужен предикат и мы могли бы использовать следующие две альтернативы:

l.filter(_.isInstanceOf[B1])

Или

l.filter(_ match {case b: B1 => true; case _ => false})

Лично мне больше нравится первый подход, но я часто читаю, что следует чаще использовать утверждение match-case(по причинам, которые я не знаю).

Поэтому возникает вопрос: есть ли недостатки использования isInstanceOfвместо утверждения match-case? Когда следует использовать какой подход (и какой подход следует использовать здесь и почему)?

16
задан John Threepwood 27 June 2012 в 15:03
поделиться