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])
Or
l.filter(_ match {case b: B1 => true; case _ => false})
就我个人而言,我更喜欢第一种方法,但我经常读到,一个应该使用match-case
更频繁地声明(出于我不知道的原因)。
因此,问题是:使用是否有缺点?isInstanceOf
而不是match-case
陈述 ?什么时候应该使用哪种方法(以及这里应该使用哪种方法以及为什么)?
你可以这样过滤:
l.collect{ case x: B1 => x }
在我看来,这更具可读性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)