让我说我有
def A = "abc"
def X = "xyz"
Run Code Online (Sandbox Code Playgroud)
我如何创建一个Mapwhere而不是
def map = [A:1, X:2]
Run Code Online (Sandbox Code Playgroud)
相反,我相当于写作
def map = [abc:1, xyz:2]
Run Code Online (Sandbox Code Playgroud)
但可以使用变量A和X键?
PS:地图的价值部分也是同样的问题.
Joa*_*uer 154
用这个:
def map = [(A):1, (X):2]
Run Code Online (Sandbox Code Playgroud)
对于价值部分来说,它更容易,因为没有自动的"将文本转换为字符串"发生:
def map = [keyA:A, keyX:X]
Run Code Online (Sandbox Code Playgroud)
Dón*_*nal 17
继Joachim的回答之后,如果要向现有地图添加条目并且键是变量,请使用:
def map = [:]
def A = 'abc'
map[A] = 2
Run Code Online (Sandbox Code Playgroud)
如果您使用:
map.A = 2
Run Code Online (Sandbox Code Playgroud)
假设您要使用文字字符串"A"作为键(即使在作用域中有一个名为A的变量).
正如@tim_yates在评论中指出的那样,如果您使用以下内容,也将解析一个关键变量:
map."$A" = 2
Run Code Online (Sandbox Code Playgroud)
虽然我个人更喜欢使用[A]语法,因为"$A"如果重命名变量,重构工具可能会错过引用