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

相关推荐
Yeah_0day42 分钟前
移动安全Android——客户端静态安全
android·app测试·安卓客户端测试·组件导出安全测试·安装包签名·反编译保护·应用完整性校验
奔跑吧 android6 小时前
【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【bt_vendor_opcode_t 介绍】
android·hal·bt·aosp13·hidl_1.0
zhifanxu10 小时前
Android开发常用Kotlin高级语法
android·开发语言·kotlin
qq_3364117510 小时前
【笔记】Trae+Andrioid Studio+Kotlin开发安卓WebView应用
android·笔记·kotlin
Tony__Ferguson11 小时前
数据结构——优先级队列(PriorityQueue)
android·java·数据结构
熙曦Sakura15 小时前
【MySQL】用户管理
android·mysql·adb
xiangxiongfly91516 小时前
Android 倒计时总结
android·倒计时·flow·timer·handler·countdowntimer
AI新视界16 小时前
MySQL高可用革命:Orchestrator实现零干预的故障转移与智能拓扑管理
android
一起搞IT吧18 小时前
Camera相机人脸识别系列专题分析之四:Camera相机领域人脸识别和人脸属性检测介绍
android·图像处理·人工智能·计算机视觉
我的青春不太冷18 小时前
Android高级开发第二篇 - JNI 参数传递与 Java → C → Java 双向调用
android·java·c语言