Kotlin 內(nèi)聯(lián)函數(shù) apply、let、run、with、also區(qū)別

Apply

  1. 用this代表當前引用對象;
  2. 調(diào)用其方法時,this可省略;
  3. 一定有返回值,且返回值為當前對象
  4. 對象可判空
       val data = DataCenter()
        /**
         * 特性
         1. 用this代表當前引用對象;
         2. 調(diào)用其方法時,this可省略;
         3. 一定有返回值,且返回值為當前對象;
         4. 對象可判空;
         */
        data?.apply {
            this.setUid("1111")
            setUid("1111")
        }.setUid("1111")

Let

  1. 用it代表當前引用對象;
  2. 調(diào)用其方法時,it不可省略;
  3. 函數(shù)最后一行為返回值,可有可無;
  4. 對象可判空;
        val data = DataCenter()
        /**
        特性
        1. 用it代表當前引用對象;
        2. 調(diào)用其方法時,it不可省略;
        3. 函數(shù)最后一行為返回值,可有可無;
        4. 對象可判空;
         */
        val value = data?.let {
            it.setUid("1111")
            
            // 不寫則無返回結(jié)果
            "返回結(jié)果"
        }

Run

  1. 用this代表當前引用對象;
  2. 調(diào)用其方法時,this可省略;
  3. 函數(shù)最后一行為返回值,可有可無;
  4. 對象可判空;
        val data = DataCenter()
        /**
        特性
        1. 用it代表當前引用對象;
        2. 調(diào)用其方法時,it不可省略;
        3. 函數(shù)最后一行為返回值,可有可無;
        4. 對象可判空;
         */
        val value = data?.run {
            this.setUid("1111")
            setUid("1111")
            
            // 不寫則無返回結(jié)果
            "返回結(jié)果"
        }

With

  1. 用this代表當前引用對象;
  2. 調(diào)用其方法時,this可省略;
  3. 函數(shù)最后一行為返回值,可有可無;
  4. 對象不可判空;
        val data = DataCenter()
        /**
        特性
        1. 用it代表當前引用對象;
        2. 調(diào)用其方法時,it不可省略;
        3. 函數(shù)最后一行為返回值,可有可無;
        4. 對象不可判空;
         */
        val value = with(data) {
            this.setUid("1111")
            setUid("1111")
            
            // 不寫則無返回結(jié)果
            "返回結(jié)果"
        }

Also

  1. 用it代表當前引用對象;
  2. 調(diào)用其方法時,it不可省略;
  3. 一定有返回值,且返回值為當前對象;
  4. 對象可判空;
        val data = DataCenter()
        /**
        特性
        1. 用it代表當前引用對象;
        2. 調(diào)用其方法時,it不可省略;
        3.  一定有返回值,且返回值為當前對象;
        4. 對象可判空;
         */
        data?.also {
            it.setUid("1111")
        }.setUid("1111")

總結(jié)

apply let run with also
函數(shù)體對象 this it this this it
對象是否可省 不可 不可
返回值 當前對象 任何對象 任何對象 任何對象 當前對象
可否判空 可以 可以 可以 不可以 可以
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容