在 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"。