美文网首页
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