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


Допустим, у меня есть

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

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

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

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

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

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

П. С.: тот же вопрос по стоимости части карты.

2 87

2 ответа:

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

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

для value-part это еще проще, так как нет автоматического "преобразования текста в строку" происходит:

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

дальше ответ Иоахима, если вы хотите добавить записи в существующую карту и ключи переменных, использовать:

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

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

map.A = 2

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

обновление

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

map."$A" = 2

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