takeIf
用于判斷指定對象是否滿足條件,滿足就返回該對象自身,不滿足返回null。因為可以返回對象自身,所以可以用作鏈式調用,以簡化代碼,又因takeIf
可能返回空,所以常常和let
結合使用,示例如下:
有一個Woman類,如下:
data class Woman(val name: String, val age: Int)
創建一個Woman對象:
val woman: Woman? = Woman("Lily", 21)
然后有個需求是判斷一個女性是否達到法定結婚年齡,如果達到了的話就打印一個消息到控制臺。示例代碼如下:
woman?.takeIf { it.age >= 20 }?.let { println("${it.name}符合法定結婚年齡了") }
在一些條件比較簡單的情況下,鏈式調用一行搞定,比較簡潔,對比原始方式需要3行,如下:
if (woman != null && woman.age >= 20) {println("${woman.name}符合法定結婚年齡了")
}