Kotlin 作用域函数:理解 apply, let, 和 with

Kotlin提供了几个作用域函数来优化和简化代码的结构。

本文将对比分析 apply, let, 和 with 三个函数。

一、对比分析:

  1. apply :在其接收者的上下文中执行代码块,并返回接收者对象
  2. let :在其接收者的上下文中执行代码块,并返回代码块的结果
  3. with :不是扩展函数,需要对象和代码块作为参数,并返回代码块的结果

二、使用场景:

  1. apply 使用场景:当需要初始化或配置对象并返回该对象时。适合链式调用。
kotlin 复制代码
val person = Person().apply {
    name = "Alice"
    age = 25
}
  1. let 使用场景:处理可空对象,并对其执行一系列操作后返回结果。适用于变换值或链式处理。
kotlin 复制代码
val personName = person?.let { 
    it.processName()
    it.name // 返回值
}
  1. with 使用场景:当你有一个非空对象,并想在其上下文中执行多个操作时。适合对同一个对象执行多个操作。
kotlin 复制代码
val info = with(person) {
    printName()
    increaseAge()
    "Name: $name, Age: $age" // 返回值
}
相关推荐
事已至此先睡覺吧40 分钟前
第三篇:Java 流程控制详解:条件判断、循环与跳转语句
java·开发语言
m0_734571761 小时前
深入理解5g <二十> dmrs
开发语言·5g
金金计较.1 小时前
Go语言-4
开发语言·golang
泡海椒2 小时前
jquick-pdf 表格行列尺寸控制实战:单元格合并的可行边界
java·开发语言·pdf
2401_833269302 小时前
RecyclerView多布局详解
android
纪念 2292 小时前
c++类和对象(四)
开发语言·c++
v_34836087622 小时前
Android_8 zygote启动分析
android
消失的旧时光-19432 小时前
Android 系统层扫盲 11:JNI 到底是什么?Java / Kotlin 是怎么调用 C/C++ 的?
android·binder·zygote·system_server·aops
mmsx3 小时前
Android 地图几万要素卡成幻灯片?顶点缓冲批上传与显存复用
android·opengl·地图·栅格
辛苦才能3 小时前
C++多态原理:虚函数表的内存布局与动态绑定的汇编真相
开发语言·c++