如何理解Kotlin中takeIf 函数

2,032 阅读1分钟

在 Kotlin 中,takeIf 是一个高阶函数,它的作用是将一个值传递给一个给定的谓词(条件),并返回满足该条件的值或 null

使用方法

public inline fun <T> T.takeIf(predicate: (T) -> Boolean): T?

具体来说,takeIf 的作用是:当接收者对象满足给定条件时,返回该对象;否则返回 null。下面是一个示例:

val result = "Hello, Kotlin!".takeIf { it.length > 10 }
println(result) // 输出 null

val result2 = "Hello, Kotlin!".takeIf { it.startsWith("Hello") }
println(result2) // 输出 "Hello, Kotlin!"

在第一个示例中,"Hello, Kotlin!" 的长度不大于 10,所以 takeIf 返回了 null。而在第二个示例中,"Hello, Kotlin!" 以 "Hello" 开头,所以 takeIf 返回了该字符串本身。

另外注意takeIf 还可以与 ?.?: 运算符配合使用,使代码更加简洁:

val result = maybeString?.takeIf { it.isNotEmpty() } ?: "default"

这个示例中,如果 maybeString 不为空并且非空字符串,则返回该字符串;否则返回 "default"