在Groovy中使用变量键时访问映射的元素

时间:2015-09-24 00:12:39

标签: dictionary groovy groovy-console

我试图替换字符串中的某些字符来自地图

案例1

​map= ['O':'0', 'L':'1', 'Z':'2', 'E':'3']
"Hey".toUpperCase().toCharArray().each{
         print map.get(it,it)
     }

结果是

HEY

案例2 :我不使用toCharArray()

"Hey".toUpperCase().each{
        print map.get(it,it)
    }

结果与预期一致

H3Y

所以我在使用toCharArray()时尝试了几种替代方案,访问该值的唯一方法是使用map."$it"

为什么我在使用map."$it"时只能使用toCharArray()来访问我的地图?

1 个答案:

答案 0 :(得分:4)

因为您尝试使用char从地图获取值,而每个键都有String,并且它们不等于:

assert !'E'.equals('E' as char)

$it有效,因为它被转换为String:

e = 'E' as char

assert "$e".toString().equals('E')

(请注意toString()是必需的,否则StringGStringImpl之间的比较将发生在不相等的位置