Kotlin 简明教程:let、run、apply、with

Kotlin 简明教程:let、run、apply、with

本文描述的重点

其他相关文章顺便讲了原理或者一大堆其他东西,代码示例相对冗长。
相比起关心它们怎么实现,官方文档说的啥,
我更关心它们该如何使用!
其他问题,用的过程中自然可以找资料或者自行解决

所以本文旨在简要说明它们的用法。

.

run

先看它名字:run
在哪里run ?在 T 里面run!

看代码——

	//示例
	var x = T.run { test() ; true }
	//T是任意非空类型,后文同理
	//test()是T中的方法,后文同理
	//返回值即最后一个表达式的值:true
	----> x = true

总结:run带的块,其执行环境是 T 内部,且返回最后一个表达式的值

.

let

let更好记,let it go嘛

所以直接看代码——

	//示例1
	var x = T.let { it.test() ; true }
	//it在let块中默认存在,指代 T
	//上述代码即以下代码的缩写:
	var x = T.let { it -> it.test() ; true }
	
	//示例2
	var x = T.let { otherName -> otherName.test() ; true }
	//——当然你看it不爽你也可以换个名字让它go,是吧
	//返回值即最后一个表达式的值:true
	----> x = true

总结:let带的块,其执行环境和块外一致,且默认用关键字 it 指代 T ,且返回最后一个表达式的值。
另:你看 it 不爽可以给它改名

.

apply

还是先看名字,想想:apply给谁?
好了,就想到这里。
看代码——

	//示例
	var x = T.apply { test() ; true }
	//编译器将警告,大意:“ true ” unused
	----> x = T

总结:apply带的块,其执行环境为 T 内部,且返回值为 T 本身
即:它是用来执行T内的某操作,且不期望获取其返回结果的
——所以kotlin官方注释说你可用它链式初始化一个对象

.

also

显而易见,对一个对象处理的时候 also 想处理……
看代码——

	//示例
	var x = T.also { it.test() ; true }
	//
	----> x = T 

总结:和 apply 同样,返回的是 T 本身,区别在于 it

.

额外

break、continue只能作用于当前块
上述"执行环境为 T 内部"的说法——不准确,因为 块内 同样可以调用 块外 可调用的任何函数、任何值

*此文系Cormor首发于CSDN,转载请注明原链接
*如有帮助,欢迎点赞打赏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值