Kotlin语言内置函数学习2:with,also,takeIf,takeUnless

内置函数2总结:

with:

with(str):with和run基本一样,只不过就是使用的时候不同

1.with函数返回类型,是根据匿名函数最后一行的变化而变化

2.with函数的匿名函数里面持有的是this==str本身


also:
str.also
1.also函数返回类型,用于都是str本身
2.also函数的 匿名函数里面呢持有的是it == str本身
 

takeIf:
name.takeIf
//一般大部分情况下,都是takeIf + 空合并操作符一起使用
//作用:如果结果为true,返回调用者name本身,否则返回null,结合空合并,如果为null,处理?:后的
 

takeUnless:

takeIf和takeUnless功能是相反的
name.takeIf {true/false}  :true返回name本身,false返回null
name.takeUnless {true/false}:false返回name本身,true返回null

一、Kotlin语言的with函数

fun main() {
    val str = "nihao"
    
    //匿名操作
    with(with(str) {
        //this == str 本身
        length
    }){
        println("你的字符串长度为:$this")
    }
    //具名操作
    with(with(str,::getStrLen),::println)  //输出nihao的长度
}

fun getStrLen(str: String) = str.length

二、Kotlin语言的also内置函数

fun main() {
    val str = "ABCDEFG"
    val r1 : String = str.also {
        true
        'C'
    }
    val r2 : Int = 123.also {
        true
        'C'
    }
    str.also {
        //it == str 本身    
        println(it)
    }
    
    //真正使用also函数的写法规则如下:
    //str.also特点,also函数始终是返回“str本身”,所以可以链式调用
    str.also {
        println("str的原始数据是:$it")
    }.also {
        println("str转换大写的效果是:${it.toLowerCase()}")
    }

   
}

三、Kotlin语言的takeIf内置函数

//一般大部分情况下,都是takeIf + 空合并操作符一起使用
//作用:如果结果为true,返回调用者name本身,否则返回null,结合空合并,如果为null,处理?:后的
fun main() {
    val result = checkPermissionAction("Derry","123")
    println(if (result != null) "欢迎${result}" else "没有权限")

    //println(checkPermissionAction2("Root","1"))
}

//前端
public fun checkPermissionAction(name: String,pwd: String) : String? {
    return name.takeIf { permissionSystem(name,pwd) }
    //name.takeIf函数,如果函数里是true,则返回name,否则,则返回null
}

//takeIf + 空合并操作符
public fun checkPermissionAction2(name: String,pwd: String) : String {
    return name.takeIf { permissionSystem(name,pwd) } ?: "你的权限不够"
    //name.takeIf函数,如果函数里是true,则返回name,否则,则返回null
}

//权限系统
private fun permissionSystem(username: String,userpwd: String) : Boolean {
    return if (uername == "root" && userpwd == "123") true else false
}

四、Kotlin语言的takeUnless内置函数

//takeUnless函数,true,返回null,false,返回调用者
class Manager {
    private var infoValue: String? = null
    fun getInfoValue()
    fun setInfoValue(infoValue: String) {
        this.infoValue = infoValue
    }
}

fun main() {
    val manager = Manager()
    "Derry".takeIf //it == Derry
    "Derry".takeUnless // it == Derry

    
    //验证字符是否有初始化,这里为空则是true,takeUnless为true,则返回null,为null,则之后?:后的
    //isNullOrBlank()判断是否为空
    println( manager.getInfoValue().takeUnless { it.isNullOrBlank() } ?: "未经过初始化")
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin为我们提供了许多内函数来简化代码编写和提高代码的可读性。下面是一些常用的Kotlin函数: 1. apply函数:apply函数允许我们在对象的上下文中执行一系列操作,并返回该对象本身。这对于初始化对象的属性非常有用。 2. also函数:also函数与apply函数类似,不同之处在于它返回的是传入的对象,而不是上下文对象本身。它通常用于执行一些附加操作,例如打印日志或进行调试。 3. let函数:let函数允许我们对一个非空的对象执行一系列操作,并返回一个结果。它可以帮助我们避免空指针异常。 4. run函数:run函数允许我们在上下文中执行一系列操作,并返回该上下文的结果。它类似于apply函数,但不同之处在于run函数返回的是闭包的结果,而不是上下文对象本身。 5. with函数:with函数允许我们在上下文中执行一系列操作,而无需使用上下文对象的名称。它通常与非空的对象一起使用,以方便地访问对象的属性和方法。 6. takeIf函数takeIf函数接受一个断言条件作为参数,并返回该对象本身,如果条件为真;否则返回null。这用于根据条件过滤对象。 7. takeUnless函数takeUnless函数takeIf函数相反,它接受一个断言条件作为参数,并返回该对象本身,如果条件为假;否则返回null。它也用于根据条件过滤对象。 这些内函数Kotlin标准库中定义,可在任何Kotlin项目中使用。它们有助于简化代码,提高开发效率。了解这些函数的用法将使您能够更好地利用Kotlin语言特性。 请注意,这只是一小部分Kotlin函数的介绍。在Kotlin的标准库中还有许多其他有用的函数等待您去探索和使用。希望这些信息对您有所帮助! <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Kotlin之内函数](https://blog.csdn.net/qq_32955807/article/details/128448836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Kotlin中内函数的用法和区别总结](https://download.csdn.net/download/weixin_38692928/14029345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值