В документации по Groovy упоминается, что использование GString для ключа плохо:
def key = 'some key'
def map = [:]
def gstringKey = "${key.toUpperCase()}"
map.put(gstringKey,'value')
assert map.get('SOME KEY') == null
Однако, просто изменив метод put(), чтобы использовать нотацию нижнего индекса:
def key = 'some key'
def map = [:]
def gstringKey = "${key.toUpperCase()}"
map[gstringKey] = 'value' // here
assert map.get('SOME KEY') == null
достаточно, чтобы вызвать сбой утверждения. Чем отличается семантика между использованием [] и методом put()? Возможно, нотация нижнего индекса имеет какое-то неявное приведение к строке?