Groovy проверка ключа в карте, пытается получить доступ к значению карты правильно? - PullRequest
1 голос
/ 02 апреля 2019

Я новичок в groovy, и оба из перечисленных ниже, кажется, действительны, но я хотел знать, в каком сценарии, если таковые имеются, первый вариант вернул бы groovy false и даст мне ошибку поиска ключа. Или это всегда хорошо в заводной? Поиск в Google не дал никаких подробностей ...

mapFoo = ['keyOne': 'valueOne', 'keyTwo': 'valueTwo']
keyExists = false

// what is the downside of using this
if (mapFoo['keyThree']){
    keyExists = true
}

// vs contains()
if (mapFoo.containsKey('keyThree')){
   keyExists = true
}

1 Ответ

4 голосов
/ 02 апреля 2019

Недостатком первого является то, что значение может быть нулевым, ложным, пустой строкой или действительно null (спасибо Szymon ?)

Все это также будет считаться ложным

Второй заслуживает доверия в этих потенциальных ситуациях, а также лучше выражает ваше намерение будущим читателям вашего кода

Однако, если область действия карты мала, и вы знаете возможные значения, набрать намного быстрее

boolean keyExists = mapFoo.keyThree
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...