【发布时间】:2015-06-24 03:33:23
【问题描述】:
我有两个Map[String, T]s,其中T 是Fruit 子类型的一个实例。我需要从两个 Map 构建新 Map,其中键是两个映射的公共键名,值是 Seq[Fruit] 如果两个映射的值共享相同的类型。
class Fruit
case class Apple() extends Fruit
case class Banana(num: Int) extends Fruit
case class Orange() extends Fruit
例如,如果我有以下两张地图:
val map1 = Map("first" -> Apple(),
"second" -> Banana(3),
"third" -> Orange())
val map2 = Map("first" -> Orange(),
"second" -> Banana(4),
"third" -> Orange())
我需要结果图,map3,它有以下成员:
generateMap(map1: Map[String, Fruit], map2: Map[String, Fruit]): Map[String, Seq[Fruit]]
=> results a map look like
Map("second" -> Seq(Banana(3), Banana(4)),
"third" -> Seq(Orange(), Orange())
我不确定如何编写函数,generateMap。有人可以帮我实现吗? (使用 Scala 2.11.x)
请注意,类定义(Fruits 和其他)是固定的,因此我无法修改它们。
【问题讨论】:
标签: scala reflection types equality