Yanıtlar:
Bunu kullan:
def map = [(A):1, (X):2]
Değer kısmı için bu daha da kolay çünkü otomatik bir "metni dizeye dönüştürme" gerçekleşmiyor:
def map = [keyA:A, keyX:X]
Map keys are strings by default: [a:1] is equivalent to ['a':1]. This can be confusing if you define a variable named a and that you want the value of to be the key in your map. If this is the case, then you must escape >the key by adding parenthesis..
[(A):1, (X):2], değişken bir String'e atlanıyor. İle ["$A":1, (X):2], "$A"bir GString ile sonuçlanan enterpolasyonlu bir dizedir. Haritalar, bir GString'in sağlamadığı anahtarların değişmez olmasını bekler.
İçin Ek Joachim cevap , varolan bir haritaya girişleri eklemek istediğiniz ve anahtarlar değişkenler ise, kullanım:
def map = [:]
def A = 'abc'
map[A] = 2
Eğer kullanırsan:
map.A = 2
Anahtar olarak 'A' değişmez dizesini kullanmak istediğiniz varsayılır (kapsamda A adında bir değişken olsa bile.
@Tim_yates'in bir yorumda belirttiği gibi, şunları kullanırsanız bir anahtar değişken de çözülecektir:
map."$A" = 2
kişisel olarak [A]sözdizimini kullanmayı tercih ediyorum çünkü yeniden düzenleme araçları "$A", değişken yeniden adlandırılırsa referansı kaçırabilir
map."$A"sözdizimi size birlikte boş güvenli haritası navigasyon fayda verir map?."$A"kullanmakta ulaşamayacağını afaik, map[A]sözdizimi
To use the value of a String as the key value of a map, simply surround the variable with parenthesis.