it-swarm.com.de

so entfernen Sie den Schlüsselwert von der Karte in Scala

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

so entfernen Sie Daten aus dieser Karte, wenn die Privatsphäre 0 ist.

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

Wenn Sie unveränderliche Karten verwenden, können Sie mit der Methode - eine neue Karte ohne den angegebenen Schlüssel erstellen:

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)

Wenn Sie veränderbare Karten verwenden, können Sie einen Schlüssel entweder mit -= oder remove entfernen.

55
Leo

Wenn Sie das skalieren und mehrere Mitglieder entfernen möchten, ist filterKeys Ihre beste Wette:

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

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

Das hängt von der Art der Scala.collection Map ab, die Sie verwenden. Scala wird mit mutable und immutable Maps geliefert. Überprüft diese Links:

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

und

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

In beiden Kartentypen ist - normalerweise der Vorgang zum Entfernen eines Schlüssels. Die Details hängen vom Kartentyp ab. Eine mutable-Map kann an Ort und Stelle mithilfe von -= geändert werden. So etwas wie

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

Auf der anderen Seite kann eine unveränderliche Karte nicht geändert werden und muss nach dem Entfernen eines Elements eine neue Karte zurückgeben.

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

Beachten Sie, dass Sie eine neue unveränderliche Karte erstellen.

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