Kotlin 内联函数 let、with、run、apply、also 区别和用法

let   

结构:fun <T, R> T.let(block: (T) -> R): R = block(this)

返回值:闭包形式返回

是否为扩展函数:是

当前对象指代:it

应用场景:一般用于判空

with

结构:fun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block()

返回值:闭包形式返回

是否为扩展函数:否

当前对象指代:this或省略 

应用场景重复调用一个对象的多个方法时,比如RecyclerView中ViewHolder赋值的时候

run

结构:fun <T, R> T.run(block: T.() -> R): R = block()

返回值:闭包形式返回

是否为扩展函数:是

当前对象指代:this或省略  

应用场景:let应用场景+with应用场景

apply

结构:fun T.apply(block: T.() -> Unit): T { block(); return this }

返回值:this    (链式调用)

是否为扩展函数:是

当前对象指代:this或省略  

应用场景:

  • let应用场景+with应用场景+run应用场景
  • 初始化一个对象时,操作对象属性,并最终返回这个对象。
  • 动态inflate出一个XML的View的时候需要给View绑定数据也会用到.
  • 可用于多个扩展函数链式调用
  • 数据model多层级包裹判空处理的问题

also

结构:fun T.also(block: (T) -> Unit): T { block(this); return this }

返回值:this    (链式调用)

是否为扩展函数:是

当前对象指代:it

应用场景:let应用场景 + 多个扩展函数链式调用

猜你喜欢

转载自blog.csdn.net/qq_39731011/article/details/119613460