我想在地图中设置一个String变量c
。
def c = "tony"
def methinks = [c:"bb"]
我想要methinks[tony] = "bb"
但我得到
methinks[c] = "bb"
任何提示
答案 0 :(得分:4)
这一切都按预期工作:
def methinks = [:]
c = "tony"
methinks[c] = "bb"
assert methinks.tony == "bb"
问题更新后:
您需要转义c
变量,因为它将按字面意思处理(作为c
符号)
参见:
def c = "tony"
def methinks = [(c):"bb"]
assert methinks.tony == 'bb'
答案 1 :(得分:4)
您可以使用点表示法或[]
来访问地图值。好像你把它搞混了:)你可以这样做:
def methinks = [:]
c = "tony"
methinks."$c" = "bb"
assert methinks."$c" == "bb"
或:
def methinks = [:]
c = "tony"
methinks[c] = "bb"
assert methinks[c] == "bb"
正如您所看到的,第二个版本看起来更好。
问题更新后:您仍在混合符号,但@Opal为您的问题提供了完全解决方案。