回答:
これを使って:
def map = [(A):1, (X):2]
値の部分については、自動マジック「テキストを文字列に変換」が行われないため、さらに簡単です。
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]
と、変数は文字列にエスケープされます。を使用する["$A":1, (X):2]
と、"$A"
は補間された文字列であり、結果としてGStringになります。マップはキーがGStringが提供しない不変であることを期待しています。
さらにヨアヒムの答えは、既存のマップにエントリを追加すると、キーが変数である場合には、次を使用します。
def map = [:]
def A = 'abc'
map[A] = 2
使用する場合:
map.A = 2
Aという名前の変数がスコープ内にある場合でも、リテラル文字列「A」をキーとして使用することを想定しています。
@tim_yatesがコメントで指摘したように、キー変数も使用すると解決されます。
map."$A" = 2
個人的には、変数の名前を変更すると[A]
リファクタリングツールが"$A"
参照を見逃す可能性があるため、構文を使用することを好みます。
map."$A"
構文は、あなたとヌル安全マップナビゲーションの利点を与えるmap?."$A"
あなたが使用して達成することができない私の知る限り、map[A]
構文
To use the value of a String as the key value of a map, simply surround the variable with parenthesis.