Je voudrais créer une union de deux cartes dont le type clé est la même et dont le type valeur est une collection d'éléments, mais dont les types sont différents.scala: union de deux cartes dont le type de clé est la même et dont le type valeur est une collection d'éléments, mais dont les types sont différents
Prenons l'exemple suivant artificiel:
case class Child(name: String)
val peopleToChildren: Map[String, Seq[Child]] =
Map("max" -> Seq(Child("a"), Child("b")),
"yaneeve" -> Seq(Child("y"), Child("d")))
case class Pet(name: String)
val peopleToPets: Map[String, Seq[Pet]] =
Map("max" -> Seq(Pet("fifi")),
"jill" -> Seq(Pet("bobo"), Pet("jack"), Pet("Roger rabbit")))
val peopleToChildrenAndDogs: Map[String, (Seq[Child], Seq[Pet])] = {
// people may have children
// people may have pets
// would like a map from people to a tuple with a potentially empty list of children and a
// potentially empty list of pets
// ???
}
Quelle serait une façon de le faire qui est concise, idiomatiques, mais toujours lisible?
Je trouve pas une seule fonction qui peut le faire dans la bibliothèque standard de collections scala.
Les solutions proposées peuvent être basées uniquement sur la bibliothèque standard, ou proposer une solution externe.
je poste ici depuis que je ne pouvais pas trouver facilement une solution en ligne pour une opération apparemment standard.
aussi cool que la solution de @ OlegPyzhcov est, et c'est, j'ai fini par utiliser cette version, car il n'avait pas de deps externes et est concis – Yaneeve