let,with,run,apply,also函数区别

Posted llayjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了let,with,run,apply,also函数区别相关的知识,希望对你有一定的参考价值。

let,with,run,apply,also函数区别

函数名定义inline的结构函数体内使用的对象返回值是否是扩展函数适用的场景
letfun <T, R> T.let(block: (T) -> R): R = block(this)it指代当前对象闭包形式返回适用于处理不为null的操作场景
withfun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block()this指代当前对象或者省略闭包形式返回适用于调用同一个类的多个方法时,可以省去类名重复,直接调用类的方法即可,经常用于android中RecyclerView中onBinderViewHolder中,数据model的属性映射到UI上
runfun <T, R> T.run(block: T.() -> R): R = block()this指代当前对象或者省略闭包形式返回适用于let,with函数任何场景。
applyfun T.apply(block: T.() -> Unit): T { block(); return this }this指代当前对象或者省略返回this1、适用于run函数的任何场景,一般用于初始化一个对象实例的时候,操作对象属性,并最终返回这个对象。2、动态inflate出一个XML的View的时候需要给View绑定数据也会用到.3、一般可用于多个扩展函数链式调用4、数据model多层级包裹判空处理的问题
alsofun T.also(block: (T) -> Unit): T { block(this); return this }it指代当前对象返回this适用于let函数的任何场景,一般可用于多个扩展函数链式调用

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

let,with,run,apply,also函数区别

let,with,run,apply,also函数区别

细说Kotlin工具函数及使用准则—函数let()run()apply()with()also()

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

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

Kotlin标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )