С следующего фрагментом я не могу извлекать gString
из карты:Почему карта не работает для GString в Groovy?
def contents = "contents"
def gString = "$contents"
def map = [(gString): true]
assert map.size() == 1 // Passes
assert gString.hashCode() == map.keySet().first().hashCode() // Passes, same hash code
assert map[gString] // Fails
Как на земле это возможно?
Assertion сообщение ясно показывает, что есть что-то серьезно не так с Groovy:
assert map[gString] // Fails
| ||
| |contents
| null
[contents:true]
Это не тот же самый вопрос, как Why groovy does not see some values in dictionary? Первый ответ там говорит:
Вы добавляете экземпляры GSTRING, как на вашей карте, а затем искать их с помощью экземпляров String.
В этом вопросе я четко добавить GString
и попытаться получить GString
.
Также у меня нет Why are there different behaviors for the ways of addressing GString keys in maps? или Groovy different results on using equals() and == on a GStringImpl. Я ничего не мутирую, и я не смешиваю String
с GString
.
http://stackoverflow.com/questions/31713359/why-are-there-different-behaviors-for-the-ways-of-addressing-gstring-keys-in-map –
http://stackoverflow.com/questions/9682206/groovy-different-results-on-use-equals-and-on-a-gstringimpl –
Тим, эти вопросы не дают мне ответа - они касаются изменчивости или смешивания 'String' с' GString'. В моем коде я не мутирую и не смешиваю ничего. –