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

相关推荐
prinTao1 小时前
【代码解析】opencv 安卓 SDK sample - 1 - HDR image
android·人工智能·opencv
_一条咸鱼_2 小时前
Android Runtime内存分配与对象生命周期深度解析(57)
android·面试·android jetpack
法的空间3 小时前
JsonToDart,你已经是一个成熟的工具了,接下来就靠你自己继续进化了!
android·flutter·ios
玲小珑3 小时前
Auto.js 入门指南(十八)常见问题与解决方案
android·前端
三少爷的鞋3 小时前
Kotlin 协程合理管理协程作用域:从 CoroutineScope 到 suspend 函数的重构实践
android
锋风3 小时前
安卓对外发布工程源码:怎么做到仅UI层公布
android
Lud_5 小时前
OpenGL ES 中的材质
android·材质·opengl es
恋猫de小郭6 小时前
Compose Hot Reload 为什么只支持桌面 JVM,它和 Live Edit 又有什么区别?
android·前端·flutter
移动开发者1号6 小时前
Android数据库连接泄露检测:解析与实战
android·kotlin
移动开发者1号6 小时前
SQLite FTS4全文搜索实战指南:从入门到优化
android·kotlin