在 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()
是必须的,否则比较的是String
和GStringImpl
不相等)
我正在尝试从映射中替换字符串中的某些字符
案例一
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()
是必须的,否则比较的是String
和GStringImpl
不相等)