0
votes

Comment supprimer la clé de la carte dans l'option Scala

Dis que j'ai des classes de cas comme celle-ci.

content.someContent.map(_.to(collection.mutable.Map))


0 commentaires

4 Réponses :


1
votes

Vous pouvez le faire en utilisant - opérateur et repliolft sur les touches pour supprimer.

Vous utilisez obtenez pour obtenir une valeur, si vous voulez le faire la sécurité, vous Besoin d'utiliser: xxx

Ceci fonctionne comme dans cet exemple: xxx


1 commentaires

Mais je n'ai pas que la carte mais l'option [carte]. J'ai essayé valwithoutkeysys = keys_to_remove.foltleft (content.somecontent.get) et obtenez juste hashmap ()



4
votes

Vous n'avez pas besoin d'une mutabilité pour cela.

val keys_to_keep: List[String] = List("a", "b")

val res = content.someContent.map(
  _.filterKeys(k => !keys_to_keep.contains(k))
)


2 commentaires

Je reçois un peu (MAPView ()) ((((((


@MakarnikitinIn Cela signifie que votre carte utilise la mise en œuvre MapView . Il s'agit d'une implémentation paresseuse et ne donnera pas de résultats tant que vous ne les interrogerez réellement (par exemple en utilisant .apply (clé) ).



1
votes

Voici comment vous pouvez le faire:

val optionalMap = someClass0.content.someContent.map {
  contentMap => contentMap - keyToBeRemoved
}

val originalStructure = someClass0.copy(content = SomeClass1(optionalMap))


2 commentaires

J'ai besoin non seulement de la carte filtrée, mais aussi de toutes les structures parents.


@Makarnikitine J'ai mis à jour ma réponse et aussi le lien vers Scastie.



0
votes

Ceci supprimera toutes les touches et conservera la structure

val someClass0_copy = someClass0.copy(content = Content(someContent = someClass0.content. someContent.map(_.removedAll(keysToRemove)))


0 commentaires