Kotlin标准库函数实战指南:let、run、with、apply、also的巧妙运用

1. 别再傻傻分不清:Kotlin作用域函数到底是个啥?

刚接触Kotlin那会儿,看到别人代码里一串串的letapplyrun,我头都大了。这都啥跟啥啊?感觉长得都差不多,为啥要用这么多种?后来项目做多了,踩过不少坑,也尝到了甜头,我才算真正搞明白。今天我就把自己这几年的实战经验掰开揉碎了讲给你听,保证你听完之后,再也不会用错。

简单来说,letrunwithapplyalso这五个家伙,在Kotlin里被统称为“作用域函数”。它们的核心作用就一句话:在一个对象的上下文中,执行一段代码块。这听起来有点抽象,我打个比方。你买了一台新电脑(对象),接下来你要做三件事:拆箱、插上电源、开机。这三件事(代码块)都是围绕这台电脑展开的。作用域函数就是帮你把这三件事“打包”在一起,并且用一种更优雅、更安全的方式去执行。

那它们到底解决了什么问题呢?我总结主要是三点:空安全代码简洁链式调用。在Java里,你要对一个可能为null的对象做一连串操作,得写一堆if (obj != null),代码又臭又长。在Kotlin里,一个?.let就搞定了。你想初始化一个对象并设置一堆属性,在Java里要么写一大段setter,要么搞个Builder模式。在Kotlin里,一个apply就能让初始化过程清晰得像在填表格。

不过,它们五个虽然目标一致,但各有各的小脾气和适用场景。选错了,代码会显得很别扭;用对了,那叫一个行云流水。它们的区别主要围绕两个关键点:第一,代码块里怎么引用这个对象?是it还是this?第二,函数的返回值是什么?是代码块的最后一行结果,还是对象本身? 记住这两点,是区分它们的关键。下面这张表可以帮你快速建立第一印象:

函数 对象引用方式 返回值 典型使用场景
let it 代码块最后一行 空安全检查,对非空对象执行操作并转换结果
run this 代码块最后一行 对象配置与计算,需要同时调用方法并返回结果
with this 代码块最后一行 对非空对象进行一系列操作,无需返回对象本身
apply this 对象本身 (this) 对象初始化、配置(Builder风格)
also it 对象本身 (it) 附加效果,如打印日志、验证数据

光看表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值