全部版块 我的主页
论坛 数据科学与人工智能 IT基础 JAVA语言开发
65 0
2025-11-27

先来看看最常用的 let 函数。它主要适用于两种场景:处理可能为 null 的对象,以及进行数据转换。例如,从接口获取到一个可能为空的字符串时,使用 let 可以极大提升空安全处理的可靠性:

在 lambda 表达式中,it 指代的是当前调用对象(如 user),可以直接使用。此外,lambda 中的最后一行会自动作为返回值返回,因此非常适合用于数据结构的转换操作——比如将一个 User 对象映射为 ViewModel 对象:

[此处为图片1]

接下来说说 run,它有两种常见的使用方式。第一种是作为扩展函数调用:

第二种则是作为普通函数使用,适用于需要临时创建一个作用域的场合:

[此处为图片2]

with 的使用方式相对直观,它接收一个对象作为参数,并在其 lambda 块中直接调用该对象的方法:

这种方式特别适合对某个对象执行一系列连续操作,相比反复书写对象名,代码更加简洁清晰。

[此处为图片3]

apply 则是配置对象属性时的首选。它的 lambda 体内默认使用 this 来引用对象本身,且最终返回对象自身,因此非常适用于对象初始化或构建过程中的属性设置:

[此处为图片4]

最后是 also,它的行为与 let 相似,但关键区别在于:它返回的是对象本身,而不是 lambda 中最后一行的计算结果。因此常被用于链式调用中插入一些副作用操作:

比如在调试过程中添加日志输出,或者临时保存某个中间状态的数据,also 都是非常合适的选择。

[此处为图片5]

简单总结一下选择这些作用域函数的基本规律:

  • 如果希望返回 lambda 内的执行结果,优先考虑 letrunwith
  • 若需要返回对象本身,则选用 applyalso
  • 涉及空安全处理时,优先使用 let
  • 当目标是配置对象属性时,直接使用 apply
  • 仅需一个独立作用域且不依赖对象上下文时,可选择 run

在实际开发中,这些函数常常结合使用,例如:

[此处为图片6]

虽然刚开始可能不容易记住每个函数的区别,但只要多写几次,很快就能形成习惯。关键在于理解它们的设计初衷——并非为了追求语法炫技,而是为了让代码更清晰、更安全、更具可读性。下次在处理对象逻辑时,不妨思考是否可以通过这些函数进行优化,一旦用顺手了,就很难再回到原来的方式了。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群