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

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

let,with,run,apply,also函数区别相关推荐

  1. pandas新字段(数据列)生成、使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战

    pandas新字段(数据列)生成.使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战 pandas apply用法: pandas apply方法的作用原理 ...

  2. js箭头函数和普通函数区别

    js箭头函数和普通函数区别 实验环境:nodejs v12.16.1 箭头函数不能作为构造函数,而普通函数可以 箭头函数没有原型,而普通函数有 箭头函数return可以省略语句块.(如果=>右边 ...

  3. base | 使用apply族函数进行向量化运算

    R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...

  4. 普通函数和箭头函数区别

    如何回答面试官普通函数和箭头函数的区别(this指向) 普通函数和箭头函数区别有以下几点区别: 声明方式不同:普通函数可以是声明式的,也可以是赋值式:而箭头函数只能是赋值式的: this指向不同:普通 ...

  5. WScript.Shell对象的这两个方法Run和Exec的区别

    转载自:http://blog.sina.com.cn/s/blog_4b8d35b70100twah.html Set ws = CreateObject("WScript.Shell&q ...

  6. python apply lambda_函数,lambda和apply用法

    1 lambda lambda原型为:lambda 参数:操作(参数) lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方.这区别于def定义的函数 ...

  7. 「杂谈」如何写好R语言apply家族函数

    感觉好久没发有关R语言的博客了.这一年来,我着手开发了两个R包,但基本没怎么发博客. 原因也很简单,可能是我个人的私心吧,或者说是典型的"理论研究者"的"通病" ...

  8. pandas使用apply函数:在dataframe数据行(row)上施加(apply)函数

    pandas使用apply函数:在dataframe数据行(row)上施加(apply)函数 目录 pandas使用apply函数:在dataframe数据行(row)上施加(apply)函数

  9. pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数

    pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数 目录 pandas使用apply函数:在dataframe数据列上施加函数 #apply函数的基本语 ...

  10. R语言apply族函数

    R语言有很重要的apply族函数:lapply sapply apply tapply mapply.这些函数底层通过C实现,效率比手工遍历高效.apply族函数是高效能计算的运算向量化(Vector ...

最新文章

  1. Java并发编程-信号量
  2. 生日快乐html_生日快乐,我的祖国
  3. uestWrapper.getSession(HttpServletRequestWrapper.java:241) ~[tomcat-embed-core-9.0.13.jar:9.0.13]
  4. Android恶意软件偷取Uber凭证
  5. 数学图形(2.18)Hyperbolical conical spiral双曲圆锥螺线
  6. cuda笔记-第一个cuda程序
  7. 时间序列异常检测 EGADS Surus iForest
  8. g++能过,c++过不了
  9. ROS入门 Client Library与roscpp
  10. 基于OpenCV的计算机视觉入门(2)图片几何变换入门
  11. TBB concurrent_set 没有erase
  12. java反射 javabean_Java反射之模仿JavaBean接收表单参数.
  13. hasOwnProperty()方法与in操作符
  14. 梯度下降优化算法综述
  15. O2O营销模式的核心是什么 O2O模式下便利店有哪些特点?
  16. 误删除恢复 (extundelete)
  17. 微信分享网页时自定义标题描述和图片
  18. django ajax jquery csrf_exempt 设置favicon.ico
  19. java 情感分析_Flink基于Alink中文情感分析示例(Java版本)
  20. oralce常见异常——ORA-12514: TNS:listener does not currently know of service requested in connect descript

热门文章

  1. bios更新工具_5分钟教会您升级bios主板,华硕主板BIOS教程
  2. FRR BGP协议分析15 -- 路由策略
  3. (转)思科VPP源码分析(feature机制分析)
  4. Android下最简单的AudioTrack播放PCM的例子
  5. “CEPH浅析”系列之六——CEPH与OPENSTACK
  6. java 中== equals hashcode源码剖析
  7. python解析json串与正则匹配对比
  8. footer.php 固定底部,让footer固定在页面(视口)底部
  9. mysql like 多个条件_MySQL之用通配符进行过滤
  10. python怎么配置pip_python如何配置pip