Con respecto a los mapas en Scala, si ms - (k, 1, m)
devuelve el mapa que contiene todas las asignaciones de ms excepto para cualquier asignación con las claves dadas, x, 1 y m.Mapa con solo ciertas teclas
Entonces, ¿qué enunciado devolverá un mapa de todas las asignaciones de ms con solo las teclas dadas, x, 1 y m. es decir, estoy buscando el subconjunto de ms donde solo k, 1 ym son claves.
Esto funciona, pero es terrible:
scala> val originalMap = Map("age" -> "20", "name" -> "jack", "hobby" -> "jumping")
ms: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(age -> 20, name -> jack, hobby -> jumping)
scala> val interestingKeys = List("name", "hobby")
interesting: List[java.lang.String] = List(name, hobby)
scala> val notInterestingMap = originalMap -- interestingKeys
notInterestingMap: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(age -> 20)
scala> val interestingMap = originalMap -- notInterestingMap.keySet
interestingMap: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(name -> jack, hobby -> jumping)
Para aquellos que usan persistencia AKKA vale la pena mencionar que la salida 'filterKeys' es _not_ serializable, me enfrenté a eso y me tomó un tiempo hasta que me di cuenta. Ver https://issues.scala-lang.org/browse/SI-6654 –