Вы не можете сделать это с контрактами в настоящее время (примечание: я был бы удивлен, если бы они покрывали этот случай). Однако в стандартной библиотеке вы рассмотрели несколько способов!
Предполагая, что у вас есть Map
, вы можете позвонить на него containsKey
(сортируйте, как сейчас). Зная, что «A» в этом случае не равно нулю, мы можем использовать .getValue("A")
, чтобы получить ненулевое значение с карты.
val map = mapOf("A" to "B")
if(map.containsKey("A")) {
println(map.getValue("A").toLowerCase())
}
Обратите внимание, что если вы позвоните .getValue()
со значением, которое на самом деле равно нулю, вы получите NoSuchElementException
.
Еще один идиоматический способ сделать это - использовать let
, который будет выполнять блок, только если значение не равно нулю:
map["A"]?.let {
println(it.toLowerCase())
}
В этом примере мы могли бы заменить ["A"]
на .get("A")
, если вы предпочитаете.