如何访问grails中的hashMaps

时间:2014-06-30 21:17:31

标签: grails groovy hashmap

我有一个有趣的问题:我无法访问我的hashmap键。

我有以下hashmap:

{a=Retrieve User Account call failed, b=This user has multiple accounts}

当我执行以下任何操作时,我会得到空白变量:

"${myMap.get('a')}"
"${myMap['a']}"
"${myMap.a}"

我从以下网址获得错误值:

"${myMap.containsKey('a')}"
"${myMap.keySet().contains('a')}"

但是当我这样做时我才会成真:

"${myMap.keySet()[1] == 'a'}"

有什么问题?如何在hashmap键或keySet上调用contains以查明散列/列表中是否有“a”?

如果它有帮助,我使用groovy 2.3.0-rc-2插件用于Groovy / Grails工具套件和grails 2.4.1

1 个答案:

答案 0 :(得分:1)

这可能是一个重复的问题,但无论如何我都会回答它。你在Groovy中的语法有点偏。

见这里:http://groovy.codehaus.org/Collections

他们的例子:

def map = [name:"Gromit", likes:"cheese", id:1234]
assert map.get("name") == "Gromit"
assert map.get("id") == 1234
assert map["name"] == "Gromit"
assert map['id'] == 1234
assert map instanceof java.util.Map

def emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.put("foo", 5)
assert emptyMap.size() == 1
assert emptyMap.get("foo") == 5

你的地图:

def map = [a:"Retrieve User Account call failed", 
    b:"This user has multiple accounts"]

assert map.get("a") == "Retrieve User Account call failed"
// also
assert map.a == "Retrieve User Account call failed"