Jawaban:
Gunakan ini:
def map = [(A):1, (X):2]
Untuk bagian nilai, ini lebih mudah, karena tidak ada "ubah teks menjadi string" otomatis yang terjadi:
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]
, variabel di-escape menjadi String. Dengan ["$A":1, (X):2]
, "$A"
adalah string interpolasi yang menghasilkan GString. Peta mengharapkan kunci menjadi tidak berubah yang tidak disediakan GString.
Selanjutnya jawaban Joachim , jika Anda ingin menambahkan entri ke peta yang ada dan kuncinya adalah variabel, gunakan:
def map = [:]
def A = 'abc'
map[A] = 2
Jika Anda menggunakan:
map.A = 2
Diasumsikan bahwa Anda ingin menggunakan string literal 'A' sebagai kunci (meskipun ada variabel bernama A dalam cakupan.
Seperti yang ditunjukkan @tim_yates dalam komentar, variabel kunci juga akan diselesaikan jika Anda menggunakan:
map."$A" = 2
meskipun secara pribadi saya lebih suka menggunakan [A]
sintaks karena alat refactoring mungkin kehilangan "$A"
referensi jika variabel diganti namanya
map."$A"
sintaks memberikan manfaat dari nol peta navigasi yang aman dengan map?."$A"
yang AFAIK Anda tidak dapat mencapai menggunakan map[A]
sintaks
To use the value of a String as the key value of a map, simply surround the variable with parenthesis.