Katakanlah saya punya
def A = "abc"
def X = "xyz"
bagaimana cara membuat Map
tempat, bukan
def map = [A:1, X:2]
Saya malah mendapatkan padanan menulis
def map = [abc:1, xyz:2]
tapi bisa menggunakan variabel A
dan X
untuk kuncinya?
PS: Pertanyaan yang sama untuk bagian nilai dari peta.
To use the value of a String as the key value of a map, simply surround the variable with parenthesis.
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:
Jika Anda menggunakan:
Diasumsikan bahwa Anda ingin menggunakan string literal 'A' sebagai kunci (meskipun ada variabel bernama A dalam cakupan.
Memperbarui
Seperti yang ditunjukkan @tim_yates dalam komentar, variabel kunci juga akan diselesaikan jika Anda menggunakan:
meskipun secara pribadi saya lebih suka menggunakan
[A]
sintaks karena alat refactoring mungkin kehilangan"$A"
referensi jika variabel diganti namanyasumber
map."$A"
sintaks memberikan manfaat dari nol peta navigasi yang aman denganmap?."$A"
yang AFAIK Anda tidak dapat mencapai menggunakanmap[A]
sintaks