Kotlin的let,with,run,also和apply
1、let
在let作用域内默认可使用it指代调用的对象,也可自定义命名。有返回值,返回值为最后一行或指定return表达式
val count = "hello".let { it.plus("1")print("${it.length}")it.length //返回值}
自定义命名
val count = "hello".let { strHello ->strHello.plus("1")print("${strHello.length}")strHello.length}
2、with
with(传参数)作用域内可使用this指代该传入的对象,使用其属性和方法。有返回值,返回值为最后一行
val hello = "hello"val world = "world"val pair = Pair(hello, world)val numWorld = with(pair){val lengthHello = this.first.lengthsecond.length //返回值}
3、run
run作用域内使用this指代调用者对象。有返回值,返回值为最后一行
val hello = "hello"val world = "world"val pair = Pair(hello, world)val strWorld = pair.run {val lengthHello = this.first.lengthval lengthWorld = second.lengthsecond //返回值}
4、also
also作用域内使用it指代调用者。有返回值,返回值为调用者自身。
val hello = "hello"val world = "world"val pair = Pair(hello, world)val strReceive: Pair<String, String> = pair.also {val lengthHello = it.first.lengthval lengthWorld = it.second.length}strReceive.first.showToast()
因为also返回值为对象自身,所以也可以修改以上代码为链式调用。
val hello = "hello"val world = "world"val pair = Pair(hello, world)pair.also {val lengthHello = it.first.lengthval lengthWorld = it.second.length}.first.showToast()
5、apply
apply作用域内使用this指代该对象。有返回值,返回值为该对象自身。
//数据类
data class Person(var name: String = "",var age: Int = 0)
val modifyPerson = Person().apply {name = "aaa"age = 10}modifyPerson.name.showToast() //此时name="aaa"
Kotlin的let,with,run,also和apply相关推荐
- Kotlin实战指南十:let、apply、with、run
转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details//94402604 本文出自[赵彦军的博客] 文章目录 let 示例1:基础用法 示 ...
- kotlin作用域函数let run whith apply also 的区别takeIf 的用法
本质区别 有两个主要区别: 引用上下文对象的方式 this 和it 使用this则具备上下文,可以省略this 而it不能省略了,因为它是参数. 返回值 apply also返回上下文对象.let,r ...
- Kotlin中let、run、with、apply及also的差别
/ 今日科技快讯 / 近日,微软刚刚发布了新版操作系统Windows 11,包括全新的设计和诸多新功能,并且能够直接运行安卓应用.该公司首席执行官兼董事长萨蒂亚·纳德拉随后接受媒体专访,他称希 ...
- Kotlin 标准库中run、let、also、apply、with函数的用法和区别
run 函数 定义: inline fun <R> run(block: () -> R): R //1 Calls the specified function block and ...
- kotlin内联函数let、with、run、apply、also
最近面试被问到kotlin内联函数,这里作个简单的总结 let 在函数体内访问该对象中的属性或方法 iv_back_activity_clock.let {it.adjustViewBounds = ...
- Kotlin学习之----内置函数apply、let、run、with、also的使用
目录 总结: 一.apply 用法: info.apply{} 二.run用法 : info.run{} 三.let用法:info.let{} 四.with用法 : with(info) 五.also ...
- kotlin中标准函数的使用(with、also、aply、let、run)
目录 一.简介 二.let 三.with 三.run 四.apply 五.also 六. run的两种方式为什么this作用域不一样,一个是 调用该函数所在的实例,一个是T对象本身实例 七.为什么le ...
- 【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )
文章目录 I . 内联扩展函数 apply II . Kotlin 调用 Java API III . apply 内联扩展函数示例 ( 调用 Java API 处理图像 ) I . 内联扩展函数 a ...
- kotlin中mainactivity无法直接调用xml中的控件_使用Kotlin高效地开发Android App(一)
一.apply 函数 和 run 函数 1.1 apply函数 apply函数是指在函数块内可以通过 this 指代该对象,返回值为该对象自己.在链式调用中,可以考虑使用它来不破坏链式. /** * ...
最新文章
- linux shell find命令 查找多种文件后缀
- (写给像我一样刚离开校园进入公司的小菜鸟)在领域架构下,如何实现简单的展示页面以及增删改查(第二步)...
- GDCM:输出DataSet的测试程序
- ERDAS软件应用(三)遥感图像的拼接
- Vue结合HTML5拖放API 实现目录拖拽~
- 云+X案例展 | 民生类:浪潮云打卡人间仙境张家界
- 漫画:Java如何实现热更新?
- 计算机三级标题,计算机三级考试题目
- 飞秋mac版字符乱码_Mac必装软件推荐,下载方法也给你了。
- 简单理解const是锁还是不锁!
- 达梦数据库存储过程调用
- [论文评析] ArXiv-2021,Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convo
- HDOJ 2013_大二写
- 华硕B85M-D台式机主板音响没反应,更新驱动还是找不到realtek高清晰音频管理器原因及解决方案
- 如何更好的使用谷歌搜索引擎
- nginx的全局配置和HTTP相关配置
- C# 关于AD域的操作 (首博)
- 人工智能需要学哪些课程?
- Linux系统Debian安装
- 佛吉尼亚大学计算机世界排名,弗吉尼亚大学计算机排名