我有各种各样的case类,不同的字段继承了一些特性。所有的都混合在一个列表中。如何收集(或分组)特定字段的值?
sealed trait Template
object Template {
case class TemplateA(field: String) extends Template
case class TemplateB extends Template
}
object Runner {
def main(args: String*) {
val list = List(TemplateA("abc"), TemplateB, Template("cde"))
// need to output something like "abc;1", "cde;1"
}
}
1条答案
按热度按时间yebdmbv41#
完全同意@LuisMiguel,只是为了展示一种方法,下面是我能想到的:
或者,如果你想在示例化
TemplateA
示例时去掉Optional参数,你也可以这样做:正如@DmytroMitin提到的,我们可以做一些重构来避免在collect函数中使用
if
,我宁愿使用某种unapply函数,它可以提取TemplateA
示例的字段值:然后,我们可以使用模式匹配: