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

时间:2011-10-13 06:41:56

标签: groovy

假设我有

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

如何创建Map,而不是

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

相反,我得写的是

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

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

P.S。:对地图的价值部分提出同样的问题。

2 个答案:

答案 0 :(得分:141)

使用此:

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

对于价值部分来说,它更容易,因为没有自动化的“将文本转换为字符串”:

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

答案 1 :(得分:17)

Joachim's answer之后,如果要将条目添加到现有地图并且键是变量,请使用:

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

如果您使用:

map.A = 2

假设您要使用文字字符串“A”作为键(即使在范围内有一个名为A的变量。

更新

正如@tim_yates在评论中指出的那样,如果您使用以下内容,也会解析一个关键变量:

map."$A" = 2

虽然我个人更喜欢使用[A]语法,因为如果重命名变量,重构工具可能会错过"$A"引用