kotlin内联函数——takeIf和takeUnless

1.takeIf

当对一个对象调用takeIf时,如果对象满足给定的判断条件,则返回该对象;否则,返回null。因此,takeIf是对单个对象进行过滤的函数。例如,

Kotlin 复制代码
class User {
            var name: String? = null
            var age = 99
            fun set(ageParam: Int) {
                age = ageParam
            }

            fun get(): Int {
                return age
            }
        }     


 val user = User().takeIf {
            it.age == 99
        }
Log.d(TAG,"user对象:$user")

2.takeUnless

takeUnless的逻辑与takeIf相反。当对一个对象调用takeUnless时,如果对象满足给定的判断条件,则返回null;否则,返回该对象。例如,

Kotlin 复制代码
class User {
            var name: String? = null
            var age = 99
            fun set(ageParam: Int) {
                age = ageParam
            }

            fun get(): Int {
                return age
            }
        }  


val user = User().takeUnless {
            it.age == 999
        }
Log.d(TAG,"user对象:$user")

注意:在takeIf和takeUnless函数调用后,如还有其他调用,请在调用时用?.判空。因为两者返回的对象可能为null。例如,

Kotlin 复制代码
class User {
            var name: String? = null
            var age = 99
            fun set(ageParam: Int) {
                age = ageParam
            }

            fun get(): Int {
                return age
            }
        }  


Log.d(TAG, "User#age:${
                User().takeUnless {
                    it.age == 999
                }?.age
            }"
        )

推荐文章

Scope functions | Kotlin Documentation

相关推荐
龙之叶4 小时前
Android13源码下载和编译过程详解
android·linux·ubuntu
闲暇部落6 小时前
kotlin内联函数——runCatching
android·开发语言·kotlin
大渔歌_6 小时前
软键盘显示/交互问题
android
LuiChun14 小时前
webview_flutter_android 4.3.0使用
android·flutter
Tanecious.14 小时前
C语言--分支循环实践:猜数字游戏
android·c语言·游戏
张云瀚16 小时前
《Kotlin核心编程》下篇
kotlin·kotlin核心编程
Android西红柿1 天前
flutter-android混合编译,原生接入
android·flutter
大叔编程奋斗记1 天前
【Salesforce】审批流程,代理登录 tips
android
命运之手1 天前
[ Spring ] Spring Cloud Gateway 2025 Comprehensive Overview
java·kotlin·gateway·spring-cloud