update - scala map getorelse
cómo eliminar el valor clave del mapa en Scala (4)
Eso depende del tipo de mapa de Scala.collection que esté utilizando. Scala viene con Mapas mutable
e immutable
. Comprueba estos enlaces:
http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.immutable.Map
y
http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.mutable.Map
En ambos tipos de mapas, -
generalmente es la operación para eliminar una clave. Los detalles dependen del tipo de mapa. Un mapa mutable
se puede modificar en su lugar utilizando -=
. Algo como
if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
m -= "play"
}
Por otro lado, un mapa inmutable no se puede modificar en su lugar y tiene que devolver un nuevo mapa después de eliminar un elemento.
if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
val newM = m - "play"
}
Observe que está creando un nuevo mapa inmutable.
Map(data -> "sumi", rel -> 2, privacy -> 0, status -> 1,name->"govind singh")
cómo eliminar datos de este mapa, si la privacidad es 0.
Map(rel -> 2, privacy -> 0, status -> 1,name->"govind singh")
Si buscas ampliar esto y eliminar varios miembros, filterKeys
es tu mejor filterKeys
:
val a = Map(
"data" -> "sumi",
"rel" -> "2",
"privacy" -> "0",
"status" -> "1",
"name" -> "govind singh"
)
val b = a.filterKeys(_ != "data")
Si usa mapas inmutables, puede usar el método -
para crear un nuevo mapa sin la clave especificada:
val mx = Map("data" -> "sumi", "rel" -> 2, "privacy" -> 0)
val m = mx("privacy") match {
case 0 => mx - "data"
case _ => mx
}
=> m: scala.collection.immutable.Map[String,Any] = Map(rel -> 2, privacy -> 0)
Si usa mapas mutables, puede simplemente eliminar una clave con -=
o remove
.
val m = Map("data" -> "sumi", "rel" -> 2, "privacy" -> 0,"status" -> 1,"name"->"govind singh")
scala> if(m("privacy")==0) m.filterKeys(_ != "data")
res63: Any = Map(name -> govind singh, rel -> 2, privacy -> 0, status -> 1)