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

相关推荐
2501_915106322 小时前
如何查看手机使用记录:Android和iOS设备全面指南
android·ios·智能手机·小程序·uni-app·iphone·webview
nee~4 小时前
Android设备USB连接转无线操作(windows)
android·windows
sun0077004 小时前
android上ethernet和wifi共存
android
青莲8436 小时前
Android Jetpack - 3 LiveData
android·前端
小蜜蜂嗡嗡6 小时前
flutter namespace问题
android·flutter
Cat God 0076 小时前
MySQL-查漏补缺版(六:MySQL-优化)
android·数据库·mysql
QING6187 小时前
Jetpack Compose Brush API 简单使用实战 —— 新手指南
android·kotlin·android jetpack
Swizard7 小时前
别让 AI 假装在工作:Android "Vibe Coding" 的生存指南
android·java·vibe coding
电饭叔8 小时前
《python语言程序设计》2018版--第8章14题利用字符串输入作为一个信用卡号之一(Luhn算法解释)
android·java·python
QING6188 小时前
Jetpack Compose Brush API 详解 —— 新手指南
android·kotlin·android jetpack