Scala 基于类的集合中的过滤器元素
我有一个抽象的AAA类和BBB、CCC和DDD子类。基本上,我还拥有AAA的不同子类的哈希集。我需要以某种方式过滤它,只从中获得BBB 大概是这样的:Scala 基于类的集合中的过滤器元素,scala,scala-collections,Scala,Scala Collections,我有一个抽象的AAA类和BBB、CCC和DDD子类。基本上,我还拥有AAA的不同子类的哈希集。我需要以某种方式过滤它,只从中获得BBB 大概是这样的: var example: Set[test.AAA] = hashSet(BBB.e1, CCC.e2, BBB.e3, BBB.e4, DDD.e5) def magicalFunction = ??? example.magicalFunction => example: Set[BBB] = Set(e1, e3, e4) 这
var example: Set[test.AAA] = hashSet(BBB.e1, CCC.e2, BBB.e3, BBB.e4, DDD.e5)
def magicalFunction = ???
example.magicalFunction
=> example: Set[BBB] = Set(e1, e3, e4)
这是你想要的吗
sealed trait AAA;
case class BBB(tag: String) extends AAA;
case class CCC(tag: String) extends AAA;
case class DDD(tag: String) extends AAA;
val example: Set[AAA] = Set(new BBB("e1"), new CCC("e2"), new BBB("e3"), new DDD("e4"))
val onlyBBB = example.collect { case x: BBB => x }
// Set(BBB(e1), BBB(e3))