Есть ли способ сделать функцию, чтобы не возвращать нуль при поиске с карты - PullRequest
3 голосов
/ 11 октября 2019

Имеет Map<K, V> и должен искать ключ и передавать результат в API SDK, который принимает только значение по умолчанию. например:

fun doSomeThing(value: V)

Поиск может выглядеть как

val v = theMap[key]

, но теперь v может иметь значение null, даже если гарантировано, что используемый здесь ключ существует и v не будет нулевым.

есть ли способ заставить функцию не возвращать обнуляемое значение в случае, если нужно посмотреть вверх с карты?

fun returnNotNullable(key: K): V {
   check(keyExist())
   return theMap[key]!!  // dont like the !! here
}

просто не хотите использовать !! как doSomeThing(theMap[key]!!)

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Do ?: throw IllegalStateException("Item not found") вместо двойного взрыва. Тип T? ?: throw ... будет ненулевым T.

0 голосов
/ 12 октября 2019

Вы можете использовать myMap.getValue(key)

...