Kotlin中with、let、run、apply、also的使用区别汇总

偷个懒,仅找了几个表格对照比对,方便以后查看使用

区别

函数名函数块内使用对象返回值是否扩展函数适用场景
withthis函数块最后一行或return表达式的值适用于调用同一个类多个方法
letit函数块最后一行或return表达式的值适用于对象统一处理不为空的情况
runthis函数块最后一行或return表达式的值适用with()、let()函数的任何场景
applythis该对象适用于run()函数的任何场景,通产可用来在初始化一个对象实例时,操作对象属性并最终返回该对象。也可用于多个扩展函数链式调用
alsoit该对象适用于let()函数的任何场景,一般可用于多个扩展函数链式调用

在这里插入图片描述

函数名定义inline的结构函数体内使用的对象返回值是否是扩展函数适用的场景
letfun T.let(block: (T) – R): R = block(this)it指代当前对象闭包形式返回适用于处理不为null的操作场景
withfun with(receiver: T, block: T.() – R): R = receiver.block()this指代当前对象或者省略闭包形式返回适用于调用同一个类的多个方法时,可以省去类名重复,直接调用类的方法即可,经常用于Android中RecyclerView中onBinderViewHolder中,数据model的属性映射到UI上
runfun 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函数的任何场景,一般可用于多个扩展函数链式调用
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值