web-dev-qa-db-fra.com

comment supprimer la valeur clé de la carte en scala

Map(data -> "sumi", rel -> 2, privacy -> 0, status -> 1,name->"govind singh")

comment supprimer des données de cette carte, si la confidentialité est 0.

Map(rel -> 2, privacy -> 0, status -> 1,name->"govind singh")  
36
Govind Singh

Si vous utilisez des cartes immuables, vous pouvez utiliser la méthode - pour créer une nouvelle carte sans la clé donnée:

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 vous utilisez des cartes mutables, vous pouvez simplement supprimer une clé avec -= ou remove.

55
Leo

Si vous souhaitez mettre à l'échelle et supprimer plusieurs membres, alors filterKeys est votre meilleur choix

val a = Map(
  "data"    -> "sumi",
  "rel"     -> "2",
  "privacy" -> "0",
  "status"  -> "1",
  "name"    -> "govind singh"
)

val b = a.filterKeys(_ != "data")
21
Kevin Wright

Cela dépend du type de carte Scala.collection que vous utilisez. Scala est livré avec les cartes mutable et immutable. Vérifie ces liens:

http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.immutable.Map

et

http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.mutable.Map

- est généralement l'opération permettant de supprimer une clé. Les détails dépendent du type de carte. Une carte mutable peut être modifiée sur place à l'aide de -=. Quelque chose comme

if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
    m -= "play"
}

D'autre part, une carte immuable ne peut pas être modifiée sur place et doit renvoyer une nouvelle carte après avoir retiré un élément.

if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
    val newM = m - "play"
}

Notez que vous créez une nouvelle carte immuable.

7
Sudeep Juvekar
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)
0
RAGHHURAAMM