Kotlin получает значение по ключу с карты

#java #kotlin

#java #kotlin

Вопрос:

Давайте предположим, что у нас есть карта:

 val charToCount = mapOf('a', 3)
  

Задача состоит в том, чтобы получить значение 3 с помощью соответствующего ключа. Проблема в том, что map.get(...) возвращает обнуляемый тип T? вместо T . Как лучше всего преобразовать значение в ненулевой тип, если есть гарантия, что ключ присутствует на карте и соответствующее значение != null ?

У меня в голове есть два способа:

  1. val count = charToCount['a']!!
  2. val count = charToCount['a'] ?: error("...")

Но оба они не кажутся краткими. Существуют ли какие-либо лучшие подходы к удалению с помощью nullable type?

Ответ №1:

Соответствующий метод

 val count: Int = charToCount.getValue('a')
  

…который «выдает исключение, если на карте нет такого ключа», согласно его документам.

Извините, если вы надеялись на что-то более краткое; если вы хотите что-то короткое, вы не сможете превзойти !! .