美文网首页
kotlin中标准函数的总结(with、also、aply、le

kotlin中标准函数的总结(with、also、aply、le

作者: 雨来 | 来源:发表于2022-11-27 13:06 被阅读0次
    //总结在前面 let 、with、run 的返回值是lamda表达式的最后一行语句(apply 、also也是)但apply 、also 返回的是this
    // let、also 传递的是it  ,run with apply 传递的是 this
    import bean.Person
    import com.sun.xml.internal.fastinfoset.util.StringArray
    
    fun main() {
    //    let()
    //    with()
    //    letUse()
    //    runTest()
    //    runTest2()
        //applyTest
        //with 、run 、apply lamda表达里传的都是this  而let和also则lamda表达式里传递的是 it also 返回的是其自身
        //let 、run、with 返回的是lamda表达式的最后一行    apply  also 返回的是 是其调用者本身
    
    
    }
    
    private fun applyTest() {
        //apply返回的是其自身 this 而 let with和 run 返回的都是lamda表达式的最后一行  let with run 函数定义最后返回的是return block
        //而apply 返回的是this 如何想让run达到 apply的效果最后一行返回this就ok了
        val result = Person("雨来", 20).apply {
            name = "胡文鹏"
            age = 18
        }
        println(result.name)
    
        result?.apply {
            //这里的对象还是 Person
        }?.name?.apply {
            //在这里你发现对象已经变为name了
            length
        }?.apply {
            //在这里你发现对象已经变为name了
        }
    }
    
    private fun runTest2() {
        val person = Person("雨来", 32)
        val result = person.run {
            name = "胡雨来"
            age = 33
            this
        }
        println(result.name)
    }
    
    private fun runTest() {
        //run lamda表达式的最后一行也是其返回值 两种方式调用一种像 let一样 一种向with一样
        var charArrayOf = charArrayOf('a', 'b', 'c', 'f', 'e')
        run {
            val result = "";
            //最后一行也是返回值
            result
        }
        //上面也是一种使用方式
        val result = charArrayOf?.run {
            onEach {
                println("条目${it}")
            }
            //最后一行为返回值
            "run也是是最后一行是返回值"
        }
        println(result)
    }
    
    private fun letUse() {
        var number: String? = null
        number?.let {
            println("是判空的")
        }
    }
    
    private fun with() {
        var charArrayOf = charArrayOf('a', 'b', 'c', 'f', 'e')
        val result = with(charArrayOf) {
            println(size)
            //有可能为空
            this?.forEach {
                println(it)
            }
            //也是最后一行返回值
            "with也是最后一行的返回值"
        }
        println(result)
    }
    
    private fun let() {
        var intArray = intArrayOf(10, 20, 30, 40, 50, 60)
        val result = intArray?.let {
            it.onEach { item ->
                println(item)
            }
            //let可以判空可 lamda表达式最后一行为返回值
            "最后一行为let表达式的返回值"
        }
        println(result)
    }
    

    相关文章

      网友评论

          本文标题:kotlin中标准函数的总结(with、also、aply、le

          本文链接:https://www.haomeiwen.com/subject/mrahfdtx.html