sealed class A
class B1 extends A
class B2 extends A
クラスのオブジェクトのリストがあると仮定しますA
: val l: List[A] = List(new B1, new B2, new B1, new B1)
そして、タイプ B1 の要素を除外したいと考えています。次に、述語が必要であり、次の 2 つの選択肢を使用できます。
l.filter(_.isInstanceOf[B1])
または
l.filter(_ match {case b: B1 => true; case _ => false})
個人的には、最初のアプローチの方が好きですが、よく読んだことがありますが、match-case
ステートメントをもっと頻繁に使用する必要があります(理由はわかりません)。
したがって、質問は次のとおりです。ステートメントisInstanceOf
の代わりに使用することの欠点はありますか? match-case
いつどのアプローチを使用する必要がありますか (ここでどのアプローチを使用する必要があるか、またその理由) ?