Как использовать переменную для ключевой части карты
Допустим, у меня есть
def A = "abc"
def X = "xyz"
как создать Map
где вместо
def map = [A:1, X:2]
Я получаю вместо этого эквивалент написания
def map = [abc:1, xyz:2]
но можно использовать переменные A
и X
ключа?
П. С.: тот же вопрос по стоимости части карты.
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"
ссылка, если переменная переименована