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

news/2024/7/8 2:37:23 标签: kotlin, 前端, 开发语言

文章目录

    • 1.let
    • 2.also
    • 3.with
    • 4.run
    • 5.apply
    • 6.总结对比

1.let

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

kotlin">name?.let {
	println("name: $it")
	it.fun1() // 不需要: 判空 或 ?.
	it.fun2()
	it.fun3()
} // 最后一行为返回值

2.also

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

kotlin">val result = name?.also {
	// do something
} // 返回 name

3.with

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

kotlin">with(person) {
	println("name:${name}") // name:null
}

4.run

kotlin">person.run {
	name = "momo"
	age = 2
}

5.apply

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

kotlin">val person = Person().apply {
    name = "John"
    age = 25
} // 返回初始化好的对象

6.总结对比

作用域函数是否判空参数返回值扩展函数说明
let判空it最后一行减少频繁判空
also判空it返回this对对象执行操作后返回
with不判空this指代当前对象/省略省去写对象
run判空this指代当前对象/省略省去写对象
apply不判空this指代当前对象/省略返回this常用于初始化对象

http://www.niftyadmin.cn/n/5536228.html

相关文章

windows USB 设备驱动开发- 选择备用设备

可以选择接口请求以激活 USB 接口中的备用设置。 客户端驱动程序必须在选择 USB 配置后发出此请求。 默认情况下,选择配置还会激活该配置中每个接口中的第一个备用设置。 每个 USB 配置必须支持一个或多个多个 USB 接口。 每个接口都会公开一个或多个终结点&#x…

暄桐好作业之《临吴昌硕〈萧斋清供图〉》

暄桐是一间传统美学教育教室,创办于2011年,林曦是创办人和授课老师,教授以书法为主的传统文化和技艺,皆在以书法为起点,亲近中国传统之美,以实践和所得,滋养当下生活。      其中“暄桐好作…

简历–求职信–通用

每个毕业生的简历首页大概都会是一封求职信。如果说对求职者的简历正文我们只是浮光掠影看上几眼的话,那么对求职信,简直连浮光掠影都称不上。说实话,我在看求职者简历的时候一般会把这一页翻过去,很少去看。为什么呢?…

探索视频合成新境界:加快加长视频生成,PAB加速与ExVideo延展技术介绍

一、摘要 随着人工智能技术的不断进步,视频合成领域正迎来前所未有的发展机遇。本文介绍近期两项视频生成方向的创新技术:PAB(Pyramid Attention Broadcast)和ExVideo。这两篇文章合在一起主要介绍如何提升视频生成的速度与长度&a…

opencv实现人脸检测功能----20240704

opencv实现人脸检测 早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。OpenCV 的官方版本中包含了一个更准确、基于深度学习的人脸检测器, 链接:基于深度学习…

基于单片机的出租车计价器实验教学案例设计

摘 要 为了让学生加深单片机的理解,加强学生的单片机技术应用、实践动手、创新能力的培养,根据单片机课程设计教学情况精心设计了基于单片机的出租车计价器实验教学案例。本教学案例的基本原理是速度的检测,里程、价格的计算和显示。学生通…

工程安全监测仪器振弦采集仪提升工程质量和安全水平

工程安全监测仪器振弦采集仪提升工程质量和安全水平 振弦采集仪是一种重要的工程安全监测仪器,可以用来监测建筑物、桥梁、隧道等工程结构的振动情况。它通过测量结构物的振动频率和振幅,可以提供关键的数据用于评估结构的安全性和稳定性。振弦采集仪在…

Django REST Framework(四)DRF APIVIEW

REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。 REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(…