Kotlin學習筆記之 13 基礎操做符run、with、let、also、apply

首發於公衆號: DSGtalk1989安全

13.基礎操做符run、with、let、also、apply

使用流程

  • T.run和runapp

    對象的run方法,在方法體中的最後一行能夠作返回值,且方法體中的this表明對象自己的引用。post

    val str: String = "Boss"
      val result = str.run {
          print(this) // 參數
          69 //區間返回值
      }
    複製代碼

    直接使用run方法,其實就是class自己調用的run,因此this指向的是classui

    val str: String = "Boss"
      val result : Int = run {
          print(this) // 參數 this@class
          69 //區間返回值
      }
    複製代碼
  • T.letthis

    run方法同樣,也會返回最後同樣的值。不一樣的是引用對象T用的是it而不是this,通常這種狀況下,之因此使用it不使用this是因爲this用來表示外面的類classspa

    val str: String = "Boss"
      val result : Int = str.let {
          print(it) // 參數
          print(this) // this@class
          69 //區間返回值
      }
    複製代碼

    let還有一個比較牛逼的地方,能夠用做對null的安全過濾,?.let調用當出現null的時候將不會運行let的方法3d

    val listWithNulls: List<String?> = listOf("Kotlin", null)
      for (item in listWithNulls) {
      	  //此處不會打印出null,只會打印出null
          item?.let { println(it) }
      }
    複製代碼
  • T.alsocode

    跟上面兩個方法不一樣的是,返回對象自己,即無論咱們在方法體中作任何操做,在方法體的最後一行返回任何東西,都是返回的T。同時方法體中也是用it來表明對象自己,this表明類class,跟上面的let惟一不一樣的就是let最終返回的方法體最後一行,而also放回的是對象自己cdn

    val str: String = "Boss"
      val result : String = str.also {
          print(it) // 參數
          print(this) // this@class
          69 //區間返回值
      }
    複製代碼
  • T.apply 使用this,不用it。而且返回對象自己。對象

    val str: String = "Boss"
    val result : String = str.apply {
          print(this) // 參數
          69 //區間返回值
      }
    複製代碼
  • with(T)

    能夠理解成也是class調的方法,跟run方法不一樣的是,run方法中this表明的是類class,而withthis表明的是T。同時返回的是方法體的最後一行

    val result1 : Int = with(str) {
          print(this) // 接收者
          69 //區間返回值
      }
    複製代碼
  • 總結

    • 要麼只能用this表明本身,要麼就是it表明本身,this表明對象所在類
    • alsoapply返回對象自己,letrun返回方法體最後一行。
    • letalsothisitapplyrun只有it

    不用去強記,IDE自帶提醒和報錯,長此以往,天然會記得。

相關文章
相關標籤/搜索