web-dev-qa-db-fra.com

Comment utiliser une variable pour la partie clé d'une carte

Disons que j'ai

def A = "abc"
def X = "xyz"

comment créer un Map où, au lieu de

def map = [A:1, X:2]

Je reçois à la place l'équivalent de l'écriture

def map = [abc:1, xyz:2]

mais peut utiliser une variable A et X pour la clé?

P.S .: Même question pour la partie valeur de la carte.

100
Ray

Utilisez ceci:

def map = [(A):1, (X):2]

Pour la partie valeur, c'est encore plus facile, car il n'y a pas de "conversion de texte en chaîne" automatique:

def map = [keyA:A, keyX:X]
149
Joachim Sauer

Suite à réponse de Joachim , si vous souhaitez ajouter des entrées à une carte existante et que les clés sont des variables, utilisez:

def map = [:]
def A = 'abc'
map[A] = 2

Si tu utilises:

map.A = 2

Il est supposé que vous souhaitez utiliser la chaîne littérale "A" comme clé (même s'il existe une variable nommée A dans la portée.

Mise à jour

Comme @tim_yates l'a souligné dans un commentaire, une variable clé sera également résolue si vous utilisez:

map."$A" = 2

mais personnellement, je préfère utiliser le [A] syntaxe car les outils de refactoring peuvent manquer le "$A" référence si la variable est renommée

17
Dónal