Kotlin使用?.判空
我们都知道Kotlin使用?.
可以优雅地处理判空。
对于以下Java代码
//java
if(user != null) {
system.out.println("name: " + user.name)
}
Kotlin中处理如下
//kt
user?.let { println("name: ${it.name}")}
多变量判空
如果有多个变量需要判空呢?
if(user != null && map != null) {
system.out.println("name: " + map.get(name.id))
}
Kotlin下面这样?
map?.let { map ->
user?.let { println("name: ${map[it.name]}") }
}
好吧。。。那如果再多几个变量判空呢?将会陷入无穷的回调地狱。
此时,可以使用以下方法处理多变量的判空
inline fun <R> notNull(vararg args: Any?, block: () -> R) =
when {
args.filterNotNull().size == args.size -> block()
else -> null
}
使用效果如下,是不是优雅多了
notNull(user, map) { println("name: ${map[it.name]}") }