kotlin - 为什么在这种情况下不给我一个不可为空的整数
问题描述
对 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
解决方案
let {}
不会改变变量的类型。你想要做的是使它成为空安全的。这是通过?.
访问完成的
myNewNullableInt?.let{
printAnInteger(it)
}
推荐阅读
- python - 缩放图形而不缩放标签、文本和轴刻度等
- python - 如何使用`bokeh.models.expressions`
- c++ - 静态函数继承的名称隐藏的初始使用
- kubernetes - 将所有秘密作为环境变量插入到 kubernetes 部署中
- c# - 如何在 MVC 框架中从类创建对象并调用方法
- java - pom文件中的Maven依赖规范
- javascript - 动态复选框列表选中取消选中所有javascript
- ios - 如何调整 UIButton 的 titleLabel 大小
- c - 用指针对每个元素求平方 (C)
- c++ - 用“-02”英特尔编译器选项替换“-01”会导致 FPE 以小的 for 循环行程计数