美文网首页kotlin
Kotlin 内联函数 apply、let、run、with、a

Kotlin 内联函数 apply、let、run、with、a

作者: BKQ_SYC | 来源:发表于2018-12-24 17:22 被阅读20次

    Apply

    1. 用this代表当前引用对象;
    2. 调用其方法时,this可省略;
    3. 一定有返回值,且返回值为当前对象
    4. 对象可判空
           val data = DataCenter()
            /**
             * 特性
             1. 用this代表当前引用对象;
             2. 调用其方法时,this可省略;
             3. 一定有返回值,且返回值为当前对象;
             4. 对象可判空;
             */
            data?.apply {
                this.setUid("1111")
                setUid("1111")
            }.setUid("1111")
    

    Let

    1. 用it代表当前引用对象;
    2. 调用其方法时,it不可省略;
    3. 函数最后一行为返回值,可有可无;
    4. 对象可判空;
            val data = DataCenter()
            /**
            特性
            1. 用it代表当前引用对象;
            2. 调用其方法时,it不可省略;
            3. 函数最后一行为返回值,可有可无;
            4. 对象可判空;
             */
            val value = data?.let {
                it.setUid("1111")
                
                // 不写则无返回结果
                "返回结果"
            }
    

    Run

    1. 用this代表当前引用对象;
    2. 调用其方法时,this可省略;
    3. 函数最后一行为返回值,可有可无;
    4. 对象可判空;
            val data = DataCenter()
            /**
            特性
            1. 用it代表当前引用对象;
            2. 调用其方法时,it不可省略;
            3. 函数最后一行为返回值,可有可无;
            4. 对象可判空;
             */
            val value = data?.run {
                this.setUid("1111")
                setUid("1111")
                
                // 不写则无返回结果
                "返回结果"
            }
    

    With

    1. 用this代表当前引用对象;
    2. 调用其方法时,this可省略;
    3. 函数最后一行为返回值,可有可无;
    4. 对象不可判空;
            val data = DataCenter()
            /**
            特性
            1. 用it代表当前引用对象;
            2. 调用其方法时,it不可省略;
            3. 函数最后一行为返回值,可有可无;
            4. 对象不可判空;
             */
            val value = with(data) {
                this.setUid("1111")
                setUid("1111")
                
                // 不写则无返回结果
                "返回结果"
            }
    

    Also

    1. 用it代表当前引用对象;
    2. 调用其方法时,it不可省略;
    3. 一定有返回值,且返回值为当前对象;
    4. 对象可判空;
            val data = DataCenter()
            /**
            特性
            1. 用it代表当前引用对象;
            2. 调用其方法时,it不可省略;
            3.  一定有返回值,且返回值为当前对象;
            4. 对象可判空;
             */
            data?.also {
                it.setUid("1111")
            }.setUid("1111")
    

    总结

    apply let run with also
    函数体对象 this it this this it
    对象是否可省 不可 不可
    返回值 当前对象 任何对象 任何对象 任何对象 当前对象
    可否判空 可以 可以 可以 不可以 可以

    相关文章

      网友评论

        本文标题:Kotlin 内联函数 apply、let、run、with、a

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