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自带提醒和报错,长此以往,天然会记得。

相关文章
相关标签/搜索