Cómo usar una variable para la parte clave de un mapa


Digamos que tengo

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

¿Cómo puedo crear un Map donde, en lugar de

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

Obtengo en cambio el equivalente a escribir

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

Pero puede usar las variables A y X para la clave?

P.D.: La misma pregunta para la parte de valor del mapa.

 87
Author: Joachim Sauer, 2011-10-13

2 answers

Usa esto:

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

Para la parte de valor es aún más fácil, ya que no hay un automagic" convertir texto a cadena " sucediendo:

def map = [keyA:A, keyX:X]
 119
Author: Joachim Sauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-13 06:44:59

Además de La respuesta de Joachim , si desea agregar entradas a un mapa existente y las claves son variables, use:

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

Si usa:

map.A = 2

Se asume que desea usar la cadena literal 'A' como clave (aunque hay una variable llamada A en el ámbito.

Actualizar

Como @tim_yates señaló en un comentario, una variable clave también se resolverá si utiliza:

map."$A" = 2

Aunque personalmente prefiero usar la sintaxis [A] porque las herramientas de refactorización pueden perder la referencia "$A" si la variable se cambia de nombre

 16
Author: Dónal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:20