作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
是否有可能写出这样的东西,还是我们必须回到 Kotlin 中手动检查空值?
val meaningOfLife : String? = null
when meaningOfLife {
exists -> println(meaningOfLife)
else -> println("There's no meaning")
}
最佳答案
一种可能的方法是首先匹配 null
以便在 else
分支中 String?
隐式转换为 String
:
val meaningOfLife: String? = null
when (meaningOfLife) {
null -> println("There's no meaning")
else -> println(meaningOfLife.toUpperCase()) //non-nullable here
}
这是 smart cast 的一个特例由编译器执行。
is String
和 else
分支可以达到类似的效果——is String
——当值不为空时检查是否为真。
有关 null 安全性的更多习语,请参阅 this answer .
关于kotlin - 如何在 Kotlin 中对选项进行模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610629/
我是一名优秀的程序员,十分优秀!