首页 > 解决方案 > 为什么在这种情况下不给我一个不可为空的整数

问题描述

对 Kotlin 来说相当新——我有点困惑,为什么在这个例子中使用 let 时,'it' 仍然可以为空?结果示例无法编译

错误:(9, 20) 类型不匹配:推断类型是 Int?但预计 Int

fun main(args: Array<String>) {
    val myNewNullableInt: Int? =6
    myNewNullableInt.let{
        printAnInteger(it)
    }

}

fun printAnInteger (integerToPrint: Int){
    println(integerToPrint)
}

示例: https ://try.kotlinlang.org/#/UserProjects/fnlicstrn4tbmk8gs071vmv4ka/9dd72cr92ikggh3g9qg981h01o

标签: kotlinnullable

解决方案


let {}不会改变变量的类型。你想要做的是使它成为空安全的。这是通过?.访问完成的

myNewNullableInt?.let{
    printAnInteger(it)
}

推荐阅读