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

相关推荐
Java资深爱好者2 小时前
Android中的AsyncTask。
android
tangweiguo030519872 小时前
android 支持自定义布局、线程安全、避免内存泄漏的 Toast 工具类
android·toast
Goober Airy3 小时前
PHP:无框架、不配置服务器,仅利用URL规则设置路由
android·java·服务器·php
JasonAndChen4 小时前
Android Studio 一直 Loading devices
android·安卓
顾林海6 小时前
深入探索Android IPC:解锁进程间通信的奥秘
android
etcix9 小时前
todo: 使用融云imserve做登录(android)
android
ljx140005255011 小时前
Android AudioFlinger(二)——AndroidAudio Flinger的启动流程
android·java
Wgllss11 小时前
该怎么学Android进阶,拒绝沦为高级三方SDK调用工程师?
android·架构·android jetpack
工程师老罗13 小时前
用DeepSeek学Android开发:Android初学者遇到的常见问题有哪些?如何解决?
android
居然是阿宋13 小时前
理解 UDP 协议与实战:Android 使用 UDP 发送和接收消息
android·网络协议·udp