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函数