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!

Était-ce utile?

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
scroll top