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 类型的元素。然后我们需要一个谓词,并且可以使用以下两种选择:
l.filter(_.isInstanceOf[B1])
或者
l.filter(_ match {case b: B1 => true; case _ => false})
就个人而言,我更喜欢第一种方法,但我经常阅读,应该match-case
更频繁地使用该语句(原因我不知道)。
因此,问题是:使用isInstanceOf
而不是match-case
语句有缺点吗?什么时候应该使用哪种方法(以及这里应该使用哪种方法以及为什么)?