Как использовать переменную для ключевой части карты

Скажем, у меня

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

как создать Map, где вместо

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

Вместо этого я получаю эквивалент записи

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

но может использовать переменные A и X для ключа?

P.S.: Тот же вопрос для значащей части карты.

Ответ 1

Используйте это:

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

Для части value это еще проще, поскольку нет автоматических "конвертировать текст в строку":

def map = [keyA:A, keyX:X]

Ответ 2

В дополнение к Joachim answer, если вы хотите добавить записи в существующую карту, а ключи - это переменные, используйте:

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

Если вы используете:

map.A = 2

Предполагается, что вы хотите использовать буквенную строку 'A' в качестве ключа (хотя в области есть переменная с именем A.

Update

Как отметил @tim_yates в комментарии, ключевая переменная также будет разрешена, если вы используете:

map."$A" = 2

хотя лично я предпочитаю использовать синтаксис [A], поскольку инструменты рефакторинга могут пропустить ссылку "$A", если переменная переименована