在Map中设置属性

时间:2014-08-21 09:23:17

标签: groovy

我想在地图中设置一个String变量c

def c = "tony"
def methinks = [c:"bb"]

我想要methinks[tony] = "bb"

但我得到

methinks[c] = "bb"

任何提示

2 个答案:

答案 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为您的问题提供了完全解决方案。