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

Posted 深海呐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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应用场景 + 多个扩展函数链式调用

以上是关于Kotlin 内联函数let,with,run,apply,also区别和用法的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin笔记:with/let/run/apply/also区别

Kotlin笔记:with/let/run/apply/also区别

Kotlin笔记:with/let/run/apply/also区别

Kotlin基础(十三) 高级语法let函数apply函数also函数run函数和with函数

Kotlin之let,apply,with,run函数区别(转)

Kotlin差异化分析,let,run,with,apply及also