Carte Scala idiomatique
-
03-07-2019 - |
Question
Je travaille avec une carte dans Scala et je fais l'habituel "s'il n'y a pas de valeur associée à une clé, créez-la, mettez-la dans la carte et renvoyez-la":
def alphaMemory(key : AlphaMemoryKey) = {
var am = map.getOrElse(key, null)
if(am == null) {
am = new AlphaMemory(key)
map.put(key, am)
}
am
}
Pour moi, cela ne ressemble pas à du code Scala idiomatique. On se croirait en Java. Y a-t-il une manière plus succincte d’écrire cela? Il semblait que je pourrais peut-être remplacer Map.default () pour insérer la nouvelle valeur et la renvoyer. Pas sûr cependant.
Merci!
La solution
mutable.Map
a getOrElseUpdate
qui fait exactement ce que vous voulez, aucun idiome nécessaire.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow