Groovy检查地图中的键,是否尝试正确访问地图值?

时间:2019-04-01 21:10:05

标签: groovy

我是groovy的新手,以下两项似乎都有效,但是我想知道在什么情况下(如果有),第一个选项将返回groovy false并给我一个关键的查找错误。或者,这在常规应用中总是可以的吗?谷歌搜索没有返回任何细节...

mapFoo = ['keyOne': 'valueOne', 'keyTwo': 'valueTwo']
keyExists = false

// what is the downside of using this
if (mapFoo['keyThree']){
    keyExists = true
}

// vs contains()
if (mapFoo.containsKey('keyThree')){
   keyExists = true
}

1 个答案:

答案 0 :(得分:4)

第一个缺点是该值可能为零,false,空字符串或实际上为null(感谢Szymon)

所有这些都将被视为错误

第二种方法在这些潜在情况下更值得信赖,并且可以更好地向将来的代码读者表达您的意图

但是,如果地图的范围很小并且您知道可能的值,则键入起来会更快

boolean keyExists = mapFoo.keyThree