前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin_作用域函数let/also/with/run/apply

Kotlin_作用域函数let/also/with/run/apply

作者头像
mikimo
发布2024-07-06 08:23:18
1080
发布2024-07-06 08:23:18
举报
文章被收录于专栏:iOS开发~iOS开发~

1.let

仅当调用对象不为 null 时执行

代码语言:javascript
复制
name?.let {
	println("name: $it")
	it.fun1() // 不需要: 判空 或 ?.
	it.fun2()
	it.fun3()
} // 最后一行为返回值

2.also

跟 let 类似,但返回的是传入对象本身

代码语言:javascript
复制
val result = name?.also {
	// do something
} // 返回 name

3.with

调用同一个对象的多个方法 / 属性时,可以省去对象名重复,直接调用方法名 / 属性即可

代码语言:javascript
复制
with(person) {
	println("name:${name}") // name:null
}

4.run

代码语言:javascript
复制
person.run {
	name = "momo"
	age = 2
}

5.apply

跟 run 类似,不过返回的是传入对象本身

代码语言:javascript
复制
val person = Person().apply {
    name = "John"
    age = 25
} // 返回初始化好的对象

6.总结对比

作用域函数

是否判空

参数

返回值

扩展函数

说明

let

判空

it

最后一行

减少频繁判空

also

判空

it

返回this

对对象执行操作后返回

with

不判空

this指代当前对象/省略

省去写对象

run

判空

this指代当前对象/省略

省去写对象

apply

不判空

this指代当前对象/省略

返回this

常用于初始化对象

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.also
  • 3.with
  • 4.run
  • 5.apply
  • 6.总结对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档