Tom*_*Tom 15 control-flow kotlin
是否有可能写出这样的东西,或者我们是否必须恢复到Kotlin中的手动空值检查?
val meaningOfLife : String? = null
when meaningOfLife {
exists -> println(meaningOfLife)
else -> println("There's no meaning")
}
Run Code Online (Sandbox Code Playgroud)
hot*_*key 17
一种可能的方法是先匹配,null以便在else分支String?中隐式转换为String:
val meaningOfLife: String? = null
when (meaningOfLife) {
null -> println("There's no meaning")
else -> println(meaningOfLife.toUpperCase()) //non-nullable here
}
Run Code Online (Sandbox Code Playgroud)
这是编译器执行的智能强制转换的特例.
使用is String和elsebranches 可以实现类似的效果- is String当值不为null时,-check为true.
有关无效安全的更多习语,请参阅此答案.
EPa*_*onU 12
您可以按如下方式完成:
val meaningOfLife: String? = null
when (meaningOfLife) {
is String -> println(meaningOfLife)
else -> println("There's no meaning")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |