例子1
简化前
private fun getMainTabGap(): Long {
return if (cacheKeyHandler != null && cacheKeyHandler!!.getMainTabGap() > 0) {
cacheKeyHandler!!.getMainTabGap()
} else {
normalGap //默认5分钟
}
}
简化后
private fun getMainTabGap(): Long = cacheKeyHandler
?.getMainTabGap()
?.takeIf {
it > 0 }
?: normalGap //默认5分钟
知识点
- 首先使用安全操作符 ?. 以避免抛出 NPE 异常
- 使用 Kotlin 的扩展库函数 takeIf(),它接受一个Lambda表达式,只有在表达式的结果为 true 时才继续执行。如果表达式的结果是 false,takeIf() 会返回null
例子2
简化前
val lastClickTime = if (lastRouteTime.containsKey(router)) {
lastRouteTime[router] ?: 0L
} else {
0L
}
简化后
val lastClickTime = lastRouteTime[router] ?: 0L
知识点
- 可以直接使用 lastRouteTime[router] 获取可空对象来简化代码
- 在 Kotlin 的 Map 类型中,如果该 key 在 map 中未定义,则获取到的是 null,因此可以直接使用 Elvis 运算符 ?: 来设置默认值,该方式代码更加简洁易读。