首页 > 解决方案 > 使用“when in”证明了地图访问的智能转换

问题描述

我正在尝试使用 Kotlin 的when块在不同的地图中查找元素。在确认元素存在后,代码随后不会将映射中的结果查找智能转换为不为空。

下面是一个最小的工作示例:是否可以对其进行!!不需要的返工?

fun main(args: Array<String>) {
    val string = "abc"
    val map1 = mapOf('a' to 5)
    val map2 = mapOf('b' to 4)
    when (val char = string.firstOrNull()) {
        null -> println("Nothing to find")
        in map1 -> println("Found in map1: ${map1[char]!!+1}")
        in map2 -> println("Found in map2: ${map2[char]!!-1}")
        else -> println("Unrecognised character $char")
    }
}

标签: kotlin

解决方案


推荐阅读