第二十五节 with、apply、let、run

1、apply

fun main(args: Array) {

    val list= arrayListOf()
    /**
     * this代表调用者本身
     * 返回值是调用者本身
     */
    list.apply {
        this.add("哈哈")
        add("张三")
        add("李四")
    }
    list.forEach {
        println(it)
    }

}

输出:


第二十五节 with、apply、let、run_第1张图片
image.png

2、let

fun main(args: Array) {

    val list= arrayListOf()
    /**
     * it代表调用者本身
     * let函数返回值是函数参数的返回值 就是lambda表达式的返回值
     */
    list?.let {
        it.add("张三")
        it.add("张三")
        it.add("张三")
        "哈哈"
        10
    }


}

3、with

fun main(args: Array) {

    val list= arrayListOf()
    /**
     * with是独立的函数  可以在任意地方调用
     * with函数需要接收两个参数
     * 第一个参数可以接收任意类型
     * 第二个参数是函数参数,并且这个函数参数是带接收者的函数字面值 接收者就是第一个参数
     * with函数返回值是第二个函数参数的返回值
     */
    with(list){
        this.add("")
        this.add("")
        add("")
        "哈哈"
        10
    }


}

4、run

fun main(args: Array) {

    val list= arrayListOf()
    /**
     * this就是调用者本身
     * run函数返回值就是函数参数的返回值
     */
    list.run {
        this.add("")
        "哈哈"
    }.length


}

• Apply(使用this代表当前对象,返回值是当前对象)
• Let(太用it代表当前对象,返回值是表达式最后一行)
• With(使用this代表当前对象,返回值是表达式最后一行)
• Run(使用this代表当前对象,返回值是表达式最后一行)

你可能感兴趣的:(第二十五节 with、apply、let、run)