在 Groovy 中使用变量键时访问地图元素

Accessing elements of a map when using a variable key in Groovy

我正在尝试从映射中替换字符串中的某些字符

案例一

​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"

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

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

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

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

e = 'E' as char

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

(注意toString()是必须的,否则比较的是StringGStringImpl不相等)