let,with,run,apply,also函数区别
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函数区别相关推荐
- pandas新字段(数据列)生成、使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战
pandas新字段(数据列)生成.使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战 pandas apply用法: pandas apply方法的作用原理 ...
- js箭头函数和普通函数区别
js箭头函数和普通函数区别 实验环境:nodejs v12.16.1 箭头函数不能作为构造函数,而普通函数可以 箭头函数没有原型,而普通函数有 箭头函数return可以省略语句块.(如果=>右边 ...
- base | 使用apply族函数进行向量化运算
R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...
- 普通函数和箭头函数区别
如何回答面试官普通函数和箭头函数的区别(this指向) 普通函数和箭头函数区别有以下几点区别: 声明方式不同:普通函数可以是声明式的,也可以是赋值式:而箭头函数只能是赋值式的: this指向不同:普通 ...
- WScript.Shell对象的这两个方法Run和Exec的区别
转载自:http://blog.sina.com.cn/s/blog_4b8d35b70100twah.html Set ws = CreateObject("WScript.Shell&q ...
- python apply lambda_函数,lambda和apply用法
1 lambda lambda原型为:lambda 参数:操作(参数) lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方.这区别于def定义的函数 ...
- 「杂谈」如何写好R语言apply家族函数
感觉好久没发有关R语言的博客了.这一年来,我着手开发了两个R包,但基本没怎么发博客. 原因也很简单,可能是我个人的私心吧,或者说是典型的"理论研究者"的"通病" ...
- pandas使用apply函数:在dataframe数据行(row)上施加(apply)函数
pandas使用apply函数:在dataframe数据行(row)上施加(apply)函数 目录 pandas使用apply函数:在dataframe数据行(row)上施加(apply)函数
- pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数
pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数 目录 pandas使用apply函数:在dataframe数据列上施加函数 #apply函数的基本语 ...
- R语言apply族函数
R语言有很重要的apply族函数:lapply sapply apply tapply mapply.这些函数底层通过C实现,效率比手工遍历高效.apply族函数是高效能计算的运算向量化(Vector ...
最新文章
- Java并发编程-信号量
- 生日快乐html_生日快乐,我的祖国
- uestWrapper.getSession(HttpServletRequestWrapper.java:241) ~[tomcat-embed-core-9.0.13.jar:9.0.13]
- Android恶意软件偷取Uber凭证
- 数学图形(2.18)Hyperbolical conical spiral双曲圆锥螺线
- cuda笔记-第一个cuda程序
- 时间序列异常检测 EGADS Surus iForest
- g++能过,c++过不了
- ROS入门 Client Library与roscpp
- 基于OpenCV的计算机视觉入门(2)图片几何变换入门
- TBB concurrent_set 没有erase
- java反射 javabean_Java反射之模仿JavaBean接收表单参数.
- hasOwnProperty()方法与in操作符
- 梯度下降优化算法综述
- O2O营销模式的核心是什么 O2O模式下便利店有哪些特点?
- 误删除恢复 (extundelete)
- 微信分享网页时自定义标题描述和图片
- django ajax jquery csrf_exempt 设置favicon.ico
- java 情感分析_Flink基于Alink中文情感分析示例(Java版本)
- oralce常见异常——ORA-12514: TNS:listener does not currently know of service requested in connect descript
热门文章
- bios更新工具_5分钟教会您升级bios主板,华硕主板BIOS教程
- FRR BGP协议分析15 -- 路由策略
- (转)思科VPP源码分析(feature机制分析)
- Android下最简单的AudioTrack播放PCM的例子
- “CEPH浅析”系列之六——CEPH与OPENSTACK
- java 中== equals hashcode源码剖析
- python解析json串与正则匹配对比
- footer.php 固定底部,让footer固定在页面(视口)底部
- mysql like 多个条件_MySQL之用通配符进行过滤
- python怎么配置pip_python如何配置pip