Answers:
用这个:
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不提供的不可变的。
除了Joachim的答案,如果您想向现有地图添加条目并且键是变量,请使用:
def map = [:]
def A = 'abc'
map[A] = 2
如果您使用:
map.A = 2
假定您要使用文字字符串“ A”作为键(即使作用域中有一个名为A的变量也是如此)。
正如@tim_yates在评论中指出的那样,如果您使用以下命令,还将解析键变量:
map."$A" = 2
尽管我个人更喜欢使用[A]
语法,因为"$A"
如果重命名变量,重构工具可能会丢失引用
map."$A"
语法给你空安全地图导航与效益map?."$A"
,这AFAIK您可以使用无法实现map[A]
的语法
To use the value of a String as the key value of a map, simply surround the variable with parenthesis.