如何使用地图的关键部分变量

就算是吧

def A = "abc"
def X = "xyz"

如何创建一个 Map,在哪里,而不是

def map = [A:1, X:2]

我得到的却是相当于写作的东西

def map = [abc:1, xyz:2]

但是可以使用变量 AX作为密钥吗?

附注: 地图的价值部分也有同样的问题。

57244 次浏览

用这个:

def map = [(A):1, (X):2]

对于值部分,它甚至更容易,因为不会自动发生“转换文本到字符串”:

def map = [keyA:A, keyX:X]

除了 Joachim 的回答之外,如果您希望向现有映射添加条目,并且键是变量,请使用:

def map = [:]
def A = 'abc'
map[A] = 2

如果你使用:

map.A = 2

假设您希望使用文本字符串‘ A’作为键(即使在作用域中有一个名为 A 的变量)。

更新

正如@tim _ yates 在评论中指出的,如果使用以下命令,关键变量也将得到解析:

map."$A" = 2

尽管我个人更喜欢使用 [A]语法,因为如果变量被重命名,重构工具可能会遗漏 "$A"引用