我是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
}
答案 0 :(得分:4)
第一个缺点是该值可能为零,false,空字符串或实际上为null
(感谢Szymon)
所有这些都将被视为错误
第二种方法在这些潜在情况下更值得信赖,并且可以更好地向将来的代码读者表达您的意图
但是,如果地图的范围很小并且您知道可能的值,则键入起来会更快
boolean keyExists = mapFoo.keyThree