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" // 返回值
}
相关推荐
川石课堂软件测试14 小时前
Android和iOS APP平台测试的区别
android·数据库·ios·oracle·单元测试·测试用例·cocoa
雪风飞舞14 小时前
python根据音频生成柱状图
开发语言·python·音视频
nbsaas-boot14 小时前
slice / map 在 Go GC 与内存碎片上的真实成本
开发语言·后端·golang
花卷HJ14 小时前
Android 通用 BaseDialog 实现:支持 ViewBinding + 全屏布局 + 加载弹窗
android
会飞的小新14 小时前
Shell 脚本中的信号与 trap:从 Ctrl+C 到优雅退出
linux·开发语言
LawrenceLan14 小时前
Flutter 零基础入门(十):final、const 与不可变数据
开发语言·flutter·dart
生产队队长14 小时前
Linux:awk进行行列转换操作
android·linux·运维
叶羽西15 小时前
Android15 EVS HAL中使用Camera HAL Provider接口
android
源代码•宸15 小时前
Leetcode—1266. 访问所有点的最小时间【简单】
开发语言·后端·算法·leetcode·职场和发展·golang
2501_9159184115 小时前
除了 Perfdog,如何在 Windows 环境中完成 iOS App 的性能测试工作
android·ios·小程序·https·uni-app·iphone·webview